Correlation domain formant enhancement

ABSTRACT

The present invention comprises a system and method for correlation domain formant enhancement. The method includes attenuating an output speech signal in areas of low spectral amplitude. The attenuated signals are subsequently analyzed, and then converted to a format suitable for transmission.

CROSS-REFERENCE TO RELATED APPLICATIONS

[0001] This application is a continuation of U.S. patent applicationSer. No. 09/822,503 filed Apr. 2, 2001 (“Compressed Domain UniversalTranscoder”).

FIELD OF THE INVENTION

[0002] The present invention relates to speech coding algorithms. Morespecifically, the present invention relates to a system and method forimproving the subjective quality of speech when using an existingstandardized speech coding algorithm.

BACKGROUND OF THE INVENTION

[0003] The term speech coding refers to the process of compressing anddecompressing human speech. Likewise, a speech coder is an apparatus forcompressing (also referred to herein as coding) and decompressing (alsoreferred to herein as decoding) human speech. Storage and transmissionof human speech by digital techniques has become widespread. Generally,digital storage and transmission of speech signals is accomplished bygenerating a digital representation of the speech signal and thenstoring the representation in memory, or transmitting the representationto a receiving device for synthesis of the original speech.

[0004] Digital compression techniques are commonly employed to yieldcompact digital representations of the original signals. Informationrepresented in compressed digital form is more efficiently transmittedand stored and is easier to process. Consequently, modern communicationtechnologies such as mobile satellite telephony, digital cellulartelephony, land-mobile telephony, Internet telephony, speech mailboxes,and landline telephony make extensive use of digital speech compressiontechniques to transmit speech information under circumstances of limitedbandwidth.

[0005] A variety of speech coding techniques exist for compressing anddecompressing speech signals for efficient digital storage andtransmission. It is the aim of each of these techniques to providemaximum economy in storage and transmission while preserving as much ofthe perceptual quality of the speech as is desirable for a givenapplication.

[0006] Compression is typically accomplished by extracting parameters ofsuccessive sample sets, also referred to herein as “frames”, of theoriginal speech waveform and representing the extracted parameters as adigital signal. The digital signal may then be transmitted, stored orotherwise provided to a device capable of utilizing it. Decompression istypically accomplished by decoding the transmitted or stored digitalsignal. In decoding the signal, the encoded versions of extractedparameters for each frame are utilized to reconstruct an approximationof the original speech waveform that preserves as much of the perceptualquality of the original speech as possible.

[0007] Coders which perform compression and decompression functions byextracting parameters of the original speech are generally referred toas parametric coders or vocoders. Instead of transmitting efficientlyencoded samples of the original speech waveform itself, parametriccoders map speech signals onto a mathematical model of the human vocaltract. The excitation of the vocal tract may be modeled as either aperiodic pulse train (for voiced speech), or a white random numbersequence (for unvoiced speech). The term “voiced” speech refers tospeech sounds generally produced by vibration or oscillation of thehuman vocal cords. The term “unvoiced” speech refers to speech soundsgenerated by forming a constriction at some point in the vocal tract,typically near the end of the vocal tract at the mouth, and forcing airthrough the constriction at a sufficient velocity to produce turbulence.Speech coders which employ parametric algorithms to map and model

[0008] There are several types of vocoders on the market and in commonusage, each having its own set of algorithms associated with the vocoderstandard. Three of these vocoder standards are:

[0009] 1. LPC-10 (Linear Prediction Coding): a Federal Standard, havinga transmission rate of 2400 bits/sec. LPC-10 is described, e.g., in T.Tremain, “The Government Standard Linear Prediction Coding Algorithm:LPC-10,” Speech Technology Magazine, pp. 40-49, April 1982).

[0010] 2. MELP (Mixed Excitation Linear Prediction): another FederalStandard, also having a transmission rate of 2400 bits/sec. Adescription of MELP can be found in A. McCree, K. Truong, E. George, T.Barnwell, and V. Viswanathan, “A 2.4 kb/sec MELP Coder Candidate for thenew U.S. Federal Standard,” Proc. IEEE Conference on Acoustics, Speechand Signal Processing, pp. 200-203, 1996.

[0011] 3. TDVC (Time Domain Voicing Cutoff): A high quality, ultra lowrate speech coding algorithm developed by General Electric and LockheedMartin having a transmission rate of 1750 bits/sec. TDVC is described inthe following U.S. patents: U.S. Pat. Nos. 6,138,092; 6,119,082;6,098,036; 6,094,629; 6,081,777; 6,081,776; 6,078,880; 6,073,093;6,067,511. TDVC is also described in R. Zinser, M. Grabb, S. Koch and G.Brooksby, “Time Domain Voicing Cutoff (TDVC): A High Quality, LowComplexity 1.3-2.0 kb/sec Vocoder,” Proc. IEEE Workshop on Speech Codingfor Telecommunications, pp. 25-26, 1997.

[0012] When different units of a communication system use differentvocoder algorithms, transcoders are needed (both ways, A-to-B andB-to-A) to communicate between and amongst the units. For example, acommunication unit employing LPC-10 speech coding can not communicatewith a communication unit employing TDVC speech coding unless there isan LPC-to-TDVC transcoder to translate between the two speech codingstandards. Many commercial and military communication systems in usetoday must support multiple coding standards. In many cases, thevocoders are incompatible with each other.

[0013] Two conventional solutions that have been implemented tointerconnect communication units employing different speech codingalgorithms consist of the following:

[0014] 1) Make all new terminals support all existing algorithms. This“lowest common denominator” approach means that newer terminals cannottake advantage of improved voice quality offered by the advancedfeatures of the newer speech coding algorithms such as TDVC and MELPwhen communicating with older equipment which uses an older speechcoding algorithm such as LPC.

[0015] 2) Completely decode the incoming bits to analog or digitalspeech samples from the first speech coding standard, and then reencodethe analog speech samples using the second speech coding standard. Thisprocess is known a tandem connection. The problem with a tandemconnection is that it requires significant computing resources andusually results in a significant loss of both subjective and objectivespeech quality. A tandem connection is illustrated in FIG. 1. Vocoderdecoder 102 and D/A 104 decodes an incoming bit stream representingparametric data of a first speech coding algorithm into an analog speechsample. A/D 106 and vocoder encoder 108 reencodes the analog speechsample into parametric data encoded by a second speech coding algorithm.

[0016] What is needed is a system and method for transcoding compressedspeech from a first coding standard to a second coding standard which 1)retains a high degree of speech quality in the transcoding process, 2)takes advantage of the improved voice quality features provided by newercoding standards, and 3) minimizes the use of computing resources. Theminimization of computing resources is especially important forspace-based transcoders (such as for use in satellite applications) inorder to keep power consumption as low as possible.

SUMMARY OF THE INVENTION

[0017] The present invention comprises a method for enhancing predictioncoefficient signals, comprising: receiving a set of predictioncoefficient signals; generating a set of bandwidth expanded coefficientsignals based on the prediction coefficient signals; converting at leastsome of the prediction coefficient signals and the bandwidth expandedcoefficient signals into corresponding autocorrelation domaincoefficient signals; convolving the autocorrelation domain coefficientsignals; converting the convolved autocorrelation domain coefficientsignals into reflection coefficient signals; determining the stabilityof the reflection coefficient signals; and converting the reflectioncoefficient signals into enhanced prediction coefficient signals.

BRIEF DESCRIPTION OF THE DRAWINGS

[0018]FIG. 1 depicts a block diagram illustrating a conventional tandemconnection.

[0019]FIG. 2 depicts a block diagram illustrating the generalarchitecture of the compressed domain universal transcoder of thepresent invention.

[0020]FIG. 3 depicts a block diagram illustrating an LPC-to-MELPtranscoding process.

[0021]FIG. 4 depicts a block diagram illustrating a MELP-to-LPCtranscoding process.

[0022]FIG. 5 depicts a block diagram illustrating a LPC-to-TDVCtranscoding process.

[0023]FIG. 6 depicts a block diagram illustrating a MELP-to-TDVCtranscoding process.

[0024]FIG. 7 depicts a block diagram illustrating a TDVC-to-LPCtranscoding process.

[0025]FIG. 8 depicts a block diagram illustrating a TDVC-to-MELPtranscoding process.

[0026]FIG. 9 depicts a block diagram illustrating a Compressed DomainConference Bridge.

[0027]FIG. 10 depicts a dual synthesizer state diagram.

[0028]FIG. 11 depicts a Compressed Domain Voice Activation Detector(CDVAD).

[0029]FIG. 12A depicts a block diagram illustrating a multi-frameencoding and decoding process.

[0030]FIG. 12B depicts 5-bit and 4-bit quantizer tables used formulti-frame gain encoding and decoding.

DETAILED DESCRIPTION OF THE INVENTION

[0031] 1. Compressed Domain Universal Transcoder

[0032] The transcoding technology of the present invention greatlyimproves the transcoding process. The transcoder directly converts thespeech coder parametric information in the compressed domain withoutconverting the parametric information to an analog speech signal duringthe conversion. The parametric model parameters are decoded,transformed, and then re-encoded in the new format. The process requiressignificantly less computing resources than the tandem connectionillustrated in FIG. 1. In some cases, the CPU time and memory savingscan exceed an order of magnitude.

[0033] In general terms, the transcoder of the present inventionperforms the following steps: 1) decode the incoming bit stream into thevocoder parameters, 2) transform the vocoder parameters into a new setof parameters for the target output vocoder, and 3) encode thetransformed parameters into a bit stream compatible with the targetoutput coder.

[0034]FIG. 2 is a block diagram illustrating the general transcodingprocess 200 of the present invention. The process 200 shown in FIG. 2 isthe general conversion process that is used to convert an incoming bitstream encoded with a first coding standard to an output bit streamencoded with a second coding standard. For example, an incoming bitstream encoded with the LPC coding standard could be converted to theMELP coding standard, or an incoming bit stream encoded in MELP codingstandard could be converted to the TDVC coding standard. The processshown in FIG. 2 illustrates the general process of the present inventionthat applies to all of the possible conversions (e.g. LPC to MELP, LPCto TDVC, MELP to LPC, etc). Each of the six individual transcoderconversions between LPC, MELP, and TDVC will later be describedindividually in more detail below with respect to sections 2-7 below andFIGS. 3-8.

[0035] As shown in FIG. 2, an incoming bit stream is received bydemultiplexing and FEC (forward error correction decoding) step 201. Theincoming bit stream represents frames containing parameters of a firstcoding standard such as LPC-10, MELP, or TDVC. This first codingstandard will also be referred to as the “input coding standard.”In step201, forward error correction decoding is performed on the incoming dataframes, and the copies of each frame are distributed to steps 202, 204,206, and 208, respectively. FEC adds redundant bits to a block ofinformation to protect from errors.

[0036] There are four basic types of parameters used in low ratevocoders: 1) gross spectrum, 2) pitch, 3) RMS power (or gain), and 4)voicing. Within these four categories of parameter types, each codingstandard employs different numbers and kinds of parameters. For example,LPC-10 employs one voicing parameter comprised of only a single voicingbit per half-frame of data, whereas MELP employs a total of sevenvoicing parameters per frame (five voicing parameters representingbandpass voicing strengths, one overall voiced/unvoiced flag, and onevoicing parameter called the “jitter flag”) in an effort to enhancespeech quality.

[0037] In steps 202, the spectral parameters of the first codingstandard are decoded from the incoming data frames. In step 204, thevoicing parameters of the first coding standard are decoded from theincoming data frames. In step 206, the pitch parameters of the firstcoding standard are decoded from the incoming data frames. In step 208,the gain parameters of the first coding standard are decoded from theincoming data frames.

[0038] In step 210, 212, 214, and 216, the decoded parameters of theinput coding standard are converted to spectrum, voicing, pitch and gainparameters, respectively, of the output coding standard. Each type ofconversion is described in detail in the sections below for eachspecific type of transcoder conversion. Note that the conversion frominput coding standard parameters to output coding standard parameters isnot always a simple one to one conversion of parameters. For example,the output voicing parameters could be a function of both the inputvoicing parameters and the input spectrum parameters (this is true, forexample, for the MELP to LPC transcoding conversion, described below).Other operations are also used in the conversion process to improve theoutput sound quality such as interpolation operations, smoothingoperations, and formant enhancement described further in sections 2-7below.

[0039] The parameters produced by the conversion steps 210, 212, 214,and 216 will be either floating point numbers or fixed point numbers,depending on the particular output coding standard. For example, theMELP and TDVC standards use floating point numbers, whereas the LPC-10standard uses fixed point numbers.

[0040] Encoding steps 218, 220, 222, and 224 encode and quantize theoutput spectrum, voicing, pitch and gain parameters, respectively, usingthe standard quantization/encoding algorithms of the output codingstandard. Lastly, in step 226, the output parameters are combined intoframes, forward error correction encoding is performed, and the outputbit stream representing frames of the output coding standard aretransmitted.

[0041] Each of the following individual transcoding processes will nowbe described in detail.

[0042] 1. LPC to MELP Transcoder

[0043] 2. LPC to TDVC Transcoder

[0044] 3. MELP to LPC Transcoder

[0045] 4. MELP to TDVC Transcoder

[0046] 5. TDVC to LPC Transcoder

[0047] 6. TDVC to MELP Transcoder

[0048] The general transcoding method illustrated in FIG. 2 and theconversion techniques described below can also be applied to createtrancoders for conversion between other coding standards besides LPC,MELP, and TDVC that are currently in usage or being developed.

[0049] 2. LPC-to-MELP Transcoder

[0050]FIG. 3 illustrates a transcoding method 300 for converting a bitstream representing frames encoded with the LPC-10 coding standard to abit stream representing frames encoded with the MELP coding standard. Instep 302, an incoming bit stream is received. The incoming bit streamrepresents LPC-10 frames containing LPC-10 parameters. Forward errorcorrection (FEC) decoding is performed on the incoming bit stream. Theincoming bit stream is also decoded by extracting LPC-10 spectrum,pitch, voicing, and gain parameters from the incoming bit stream. Theparameters are then distributed to spectrum conversion step 304, voicingconversion step 312, pitch conversion step 316 and gain conversion step322. Each of these conversion processes will now be described in detail.

[0051] a. Spectrum Conversion

[0052] The LPC-10 spectrum parameters are referred to as “reflectioncoefficients” (RCs) whereas the MELP spectrum parameters are referred toas “line spectrum frequencies” (LSFs). The conversion of RCs to LSFs isperformed in steps 304, 306, 3108, and 310, and will now be described indetail.

[0053] In step 304, the LPC-10 reflection coefficients (RC) are firstconverted to their equivalent normalized autocorrelation coefficients(R). The LPC-10 reflection coefficients (RC) are also converted to theirequivalent predictor filter coefficients (A); the predictor filtercoefficients (A) are saved for later use in formant enhancement step308. Both of these conversions (RC→R, RC→A) are performed by using wellknown transformations. In order to avoid truncation effects insubsequent steps, the autocorrelation conversion (RC→R) recursion iscarried out to 50 lags (setting RCs above order 10 to zero). Theresulting values for the autocorrelation coefficients (R) are storedsymmetrically in a first array.

[0054] In step 306, the “preemphasis” is removed from the LPC-10autocorrelation (R) coefficients. To explain why this is performed,first an explanation of preemphasis is provided as follows. Whenencoding speech according to the LPC speech coding algorithm standard,an operation known as “preemphasis” is performed on the sampled speechsignal prior to spectral analysis. Preemphasis is performed by applyinga first order FIR filter prior to spectral analysis. This preemphasisoperation attenuates the bass frequencies and boosts the treblefrequencies. The purpose of preemphasis is to aid in the computationsassociated with a fixed point processor; preemphasis makes it lesslikely for the fixed point processor to get an instability from anunderflow or an overflow condition.

[0055] Newer speech coding algorithms such as MELP and TDVC do notperform preemphasis because they were designed for modern signalprocessing hardware that has wider data paths. Therefore, a MELPsynthesizer expects spectral coefficients that were produced directlyfrom the sampled speech signal without preemphasis.

[0056] Because LPC uses preemphasis, while MELP does not, in step 306the preemphasis effects are removed from the LPC-10 spectralcoefficients. Preemphasis removal is performed as follows. Thesymmetrical autocorrelation coefficients (HH) of a deemphasis filter arecalculated beforehand and stored in a second array matching the formatof the first array of autocorrelation coefficients (R) created in step304. The deemphasis filter is a single pole IIR filter and is generallythe inverse of the preemphasis filter used by LPC-10, but differentpreemphasis and deemphasis coefficients may be used. The LPC-10 standarduses 0.9375 for preemphasis and 0.75 for deemphasis. Because thedeemphasis filter has IIR characteristics, the autocorrelation functionis carried out to 40 time lags. The autocorrelation values are obtainedby convolving the impulse response of the filter.

[0057] A modified set of spectral autocorrelation coefficients iscalculated via convolving the R values with the HH values as follows:${R^{\prime}(k)} = {\sum\limits_{i}{{R\left( {i + k} \right)}*{{HH}(i)}}}$

[0058] The resulting modified autocorrelation coefficients R′ will bereferred to herein as “deemphasized” autocorrelation coefficients,meaning that the LPC-10 preemphasis effects have been removed. Note thatby removing the preemphasis in the correlation domain (i.e. removing thepreemphasis from autocorrelation coefficients rather than the reflectioncoefficients or filter coefficients), computational complexity can bereduced.

[0059] The deemphasized autocorrelation coefficients R′ are thenconverted to deemphasized reflection coefficients (RC′) and deemphasizedpredictor filter coefficients (A′), using well known conversionformulas. The stability of the synthesis filter formed by thecoefficients is checked; if the filter is unstable, the maximum orderstable model is used (e.g. all RC′ coefficients up to the unstablecoefficient are used for the conversion to A′ coefficients). The RC andRC′ values are saved for use by the “Compute LPC Gain Ratio” step 320,described further below.

[0060] In step 308, formant enhancement is performed. The perceptualquality produced by low rate speech coding algorithms can be enhanced byattenuating the output speech signal in areas of low spectral amplitude.This operation is known as formant enhancement. Formant enhancementsharpens up the spectral peaks and depresses the valleys to produce acrisper sound that is more intelligible. Format enhancement isconventionally performed during the process of decoding the bit streaminto an analog speech signal. However, according to the presentinvention, it has been found that formant enhancement can be used to inthe transcoding process 300 to produce a better sounding speech output.

[0061] Two methods of formant enhancement are described in detail insections 12 and 13 below. Section 12 describes a method of formantenhancement performed in the correlation domain. Section 13 describes asecond method of formant enhancement performed in the frequency domain.The formant enhancement method performed in the correlation domainutilizes both the non-deemphasized filter coefficients (A) and thedeemphasized filter coefficients (A′). Both methods of formantenhancement produce good results. Which one is preferable is asubjective determination made by the listener for the particularapplication.

[0062] Formant enhancement step 310 outputs “enhanced” deemphasizedLPC-10 filter coefficients (A″), wherein the term “enhanced” means thatformant enhancement has been performed. The transcoding process of thepresent invention illustrated in FIG. 3 could potentially be performedwithout formant enhancement step 308. However, formant enhancement hasbeen found to substantially improve the speech quality andunderstandability of the MELP output.

[0063] In step 310, the enhanced deemphasized LPC-10 filter coefficients(A″) are converted to MELP line spectrum frequencies (LSFs). Thisconversion is made by using well known transformations. In step 310, theMELP LSFs are then adaptively smoothed. With modern vocoders like MELPand TDVC, because of the way the quantization error is handled, thevoice often obtains an undesirable vibrato-like sound if smoothing isnot performed. Thus, in step 310, a smoothing function is applied toreduce this undesirable vibrato effect. The smoothing function isdesigned to reduce small fluctuations in the spectrum when there are nolarge frame-to-frame spectrum changes. Large fluctuations are allowed topass with minimum smoothing. The following C-code segment is an exampleof such a smoother. Note that this segment is only an example, and anyalgorithm having a smoothing effect similar to that described abovecould be used. for (i=0; i<10; i++) {  delta = 10.0*(lsp[i] −oldlsp[i]);  if (delta < 0.0) delta = −delta;  if (delta > 0.5) delta =0.5;  lsp[i] = lsp[i]*(0.5+delta) + oldlsp[i]*(0.5−delta); }

[0064] where lsp[i] are the current frame's LSF coefficients, oldlsp[i]are the previous frame's LSF coefficients, and delta is a floating pointtemporary variable.

[0065] MELP also has the provision for encoding the first 10 harmonicamplitudes for voiced speech. These harmonic amplitudes can either beset to zero or generated as follows. U.S. Pat. No. 6,098,036 to Zinseret al., “Speech Coding System and Method Including Spectral FormantEnhancer,” discloses a spectral formant enhancement algorithm togenerate these harmonic amplitudes. In particular, the process describedin columns 17 and 18 can be used to generate 10 amplitudes (amp(k), k=1. . . 10) from Equation 7 in column 18. Further enhancement may beachieved by utilizing the method described in Grabb, et al., U.S. Pat.No. 6,081,777, “Enhancement of Speech Signals Transmitted Over a VocoderChannel”, and modifying the first three harmonic amplitudes amp(k)according to the values given in FIG. 5 and the accompanying equation.

[0066] It was found that generating harmonic amplitudes in this mannerproduced a superior output quality sound for the TDVC to MELP transcoder(described in section 7, below). However, the improvement for the LPC-10to MELP transcoder was not as significant. Therefore, for the LPC-10 toMELP transcoder, it may be desirable to simply set the MELP harmonicamplitudes to zero, to reduce computational complexity.

[0067] After multiplication by a factor of 2 (to match scalingconventions), the smoothed LSFs are encoded according to the MELPquantization standard algorithm.

[0068] b. Voicing Conversion and Jitter Factor Conversion

[0069] In step 312, the LPC-10 voicing parameters are converted intoMELP voicing parameters. This is not a simple one-to-one conversionbecause LPC-10 uses only a single voicing parameter, whereas MELP usesseveral voicing parameters. Thus, a method has been devised according tothe present invention for assigning MELP parameters based on the LPC-10parameters which produces superior sound quality.

[0070] The LPC-10 coding standard uses only a single voicing bit perhalf-frame representing either voiced or unvoiced; i.e., each half-frameis either voiced or unvoiced. In order to provide improved soundquality, the newer MELP coding standard uses seven different voicingparameters: five bandpass voicing strengths, one overall voiced/unvoicedflag, and one voicing parameter called the “jitter flag” which is usedto break up the periodicity in the voiced excitation to make the speechsound less buzzy during critical transition periods.

[0071] The conversion process of the present invention uses the expandedvoicing features of the MELP synthesizer to advantage duringtransitional periods such as voicing onset, described as follows. TheLPC voicing bits are converted to MELP voicing parameters according tothree different situations:

[0072] (1) mid-frame onset (the first LPC half-frame is unvoiced and thesecond half-frame is voiced).

[0073] (2) fully voiced (both half-frames are voiced).

[0074] (3) fully un-voiced mid-frame unvoiced transition (either bothhalf-frames are unvoiced or the first frame is voiced and the secondhalf-frame is unvoiced).

[0075] The method is illustrated by the piece of C code below. Testinghas found that this method provides the superior sound performance. Thismethod tends to provide a smoother transition from voiced to unvoicedtransitions. The following C-code segment illustrates the method ofconverting LPC-10 voicing bits to the MELP voicing parameters: /*mid-frame onset */ if ((lpc->voice[0]==0) && (lpc->voice[1]==1)) {melp->uv_flag = 0;  melp->jitter = 0.25; for (i=0; i<NUM_BANDS-2; i++)melp->bpvc[i] = 1.0; melp->bpvc[NUM_BANDS-2] = 0.0;melp->bpvc[NUM_BANDS-1] = 0.0; } /* fully voiced */ else if((lpc->voice[0]==1) && (lpc->voice[1]==1)) { melp->uv_flag = 0;melp->jitter = 0.0; for (i=0; i<NUM_BANDS; i++) melp->bpvc[i] = 1.0; }/* fully unvoiced and mid-frame unvoiced transition */ else {melp->uv_flag = 1; melp->jitter = 0.25; for (i=0; i<NUM_BANDS; i++)melp->bpvc[i] = 0.0; }

[0076] where lpc->voice[0] and lpc->voice[1] are the half-frame LPCvoicing bits (0=unvoiced), melp->uv_flag is the MELP overall unvoicedflag (0=unvoiced), melp->jitter is the MELP jitter flag, andmelp->bpvc[i] are the MELP bandpass voicing strengths. Note that for thetransition from unvoiced to voiced, the top two MELP voicing bands areforced to be unvoiced. This reduces perceptual buzziness in the outputspeech.

[0077] In step 314, the MELP voicing and jitter parameters are encodedaccording to the MELP quantization standard algorithm.

[0078] c. Pitch Conversion

[0079] In step 316, the LPC-10 pitch parameters are converted to MELPpitch parameters. The LPC-10 coding standard encodes pitch by a linearmethod whereas MELP encodes pitch logarithmically. Therefore, in step316, the logarithm is taken of the LPC-10 pitch parameters to convert tothe MELP pitch parameters. In step 318, the MELP pitch parameters areencoded using the MELP quantization standard algorithm.

[0080] d. Gain (RMS) Conversion

[0081] The conversion from LPC-10 RMS gain parameters to MELP gainparameters begins in step 322. In step 322, the LPC-10 RMS gainparameters are scaled to account for the preemphasis removal performedon the LPC-10 spectral coefficients in step 306. To explain, asmentioned previously, LPC-10 coding adds preemphasis to the sampledspeech signal prior to spectral analysis. The preemphasis operation, inaddition to attenuating the bass and increasing the treble frequencies,also reduces the power level of the input signal. The power level isreduced in a variable fashion depending on the spectrum. Therefore, theeffect of removing the preemphasis in step 306 must be accounted foraccordingly when converting the gains from LPC to MELP. The preemphasisremoval is accounted for by scaling the gains in step 322.

[0082] In step 320, an “LPC gain ratio” is calculated for each new frameof parametric data. The LPC gain ratio is the ratio of the LPC predictorgains derived from the spectrum before and after preemphasis removal(deemphasis addition) in step 306. If,${lpcgain1} = \frac{1}{\sqrt{\prod\limits_{i}\left( {1 - {{rc}^{2}(i)}} \right)}}$

[0083] is defined as the synthesis filter gain before preemphasisremoval and:${lpcgain2} = \frac{1}{\sqrt{\prod\limits_{i}\left( {1 - {{rc}^{\prime \quad 2}(i)}} \right)}}$

[0084] is defined as the synthesis filter gain after preemphasisremoval, then the scaling factor (i.e., the LPC Gain Ratio) to be usedfor the LPC-10 gain is ${scale} = \frac{8*{lpcgain2}}{lpcgain1}$

[0085] The factor of 8 is included to accommodate the 13 bit input andoutput sample scaling in LPC-10 (MELP utilizes 16 bit input and outputsamples). In step 322, the LPC RMS gain parameter is scaled by the LPCGain Ratio calculated in step 320.

[0086] Steps 324 addresses another difficulty in the gain conversionprocess which is that MELP uses two gain parameters per frame, whereasLPC uses only one gain parameter per frame. MELP employs a first gainparameter for the first half frame, and a second gain parameter for thesecond half frame. There thus needs to be a method for assigning the twohalf-frame MELP gains which produce a good quality sounding output.

[0087] A simple method of assigning MELP gains would be to simply setboth of the MELP gains equal to the LPC RMS gain. However, it has beenfound that a better result is obtained if the two MELP gains aregenerated by taking a logarithmic average of the LPC RMS gains fromframe to frame. This is performed in steps 324 and 326. As illustratedby the C-code segment below, the first MELP frame gain is assigned to beequal to the logarithmic average of the old LPC RMS gain from the lastframe and the new LPC RMS gain from the current frame. The second MELPgain is set equal to the LPC RMS gain for the current frame. This methodof assigning MELP gains provides a smooth transition.

[0088] The following C-code segment illustrates this method ofcalculating the gains:

melp->gain[0]=pow(10.0, 0.5*log10(LPCrmsold)+0.5*log10(LPCrms));

melp->gain[1]=LPCrms;

[0089] LPCrms and LPCrmsold represent the scaled LPC RMS gains computedin step 322. LPCrms is the current frame's gain, while LPCrmsold is theprevious frame's scaled gain. melp->gain[0] and melp->gain[1] are theMELP half frame gains, pow( ) is the C library power function, andlog10( ) is the C-library base-10 logarithm function.

[0090] In step 326, the logarithmic value of the two MELP gains areprovided to encoding step 328. In step 328, the MELP half-frame gainsare encoded using the standard MELP logarithmic quantization algorithm.

[0091] In step 330, the encoded MELP spectrum, voicing, pitch, and gainparameters are inserted into MELPs frame and forward error correction(FEC) coding is performed. An output bit stream representing the MELPframes is then transmitted to a desired recipient.

[0092] 3. MELP to LPC Transcoder

[0093]FIG. 4 illustrates a transcoding method 400 for converting a bitstream representing frames encoded with the MELP coding standard to abit stream representing frames encoded with the LPC-10 coding standard.In step 402, an incoming bit stream is received. The incoming bit streamrepresents MELP frames containing MELP parameters. In step 402, forwarderror correction (FEC) decoding is performed on the incoming bit stream.The MELP frames are also decoded by extracting the MELP spectrum, pitch,voicing, and gain parameters from the MELP frames. The MELP parametersare then distributed to steps 404, 412, 416 and 420 for conversion toLPC-10 spectrum, voicing, pitch and gain parameters, respectively. Eachof these conversion processes will now be described in detail.

[0094] a. Spectrum Conversion

[0095] In step 404, the MELP LSFs are converted to their equivalentnormalized autocorrelation coefficients R using well knowntransformations. In step 406, preemphasis is added to theautocorrelation coefficients R. As mentioned previously for the LPC toMELP transcoder (section 2, above), LPC-10 speech encoders addpreemphasis to the originally sampled (nominal) speech signal before theLPC-10 spectral analysis and encoding is performed. Thus, transcoder 400must modify the autocorrelation coefficients R to produce modifiedautocorrelation coefficients which are equivalent to autocorrelationcoefficients that would have been produced had the original nominalspeech signal been preemphasized prior to LPC-10 encoding.

[0096] The LPC-10 0.9375 preemphasis coefficient must be superimposed onthe spectrum. This is performed in the correlation domain by performingthe following operation on the autocorrelation (R) coefficients:

R′(i)=R(i)−0.9375[R(|i−1|)+R(i+1)]+0.9375² R(i)

[0097] where R′(i) are the preemphasized autocorrelation coefficients.Note that the input set of R(i)s must be computed out to 11 lags toavoid truncation. The preemphasized autocorrelation coefficients R′ arethen transformed to preemphasized predictor filter coefficients A′ usingwell known transformations. As noted in section 2, above, performing thepreemphasis addition in the correlation domain reduces computationalcomplexity.

[0098] In step 408, formant enhancement is performed. The purpose offormant enhancement step 408 is the same as formant enhancement step 308described above for the LPC-10 to MELP transcoder. Two methods offormant enhancement are described in detail in sections 12 and 13 below.Section 12 describes a method of formant enhancement performed in thecorrelation domain. Section 13 describes a second method of formantenhancement performed in the frequency domain. Both methods of formantenhancement produce good results. Which one is preferable is asubjective determination made by the listener for the particularapplication. For the MELP to LPC-10 transcoder, the majority oflisteners polled showed a slight preference frequency domain method.

[0099] In step 410, the formant enhanced preemphasized filtercoefficients A″ are converted to LPC-10 reflection coefficients RC″using well known transformations. Also in step 410, the reflectioncoefficients RC″ are encoded according to the LPC-10 quantizer tables.

[0100] b. Voicing Conversion

[0101] In step 412, the MELP voicing parameters are converted to LPCvoicing parameters. As mentioned previously, the LPC-10 coding standarduses only a single voicing bit per half-frame, whereas the MELP codingstandard uses seven different voicing parameters: five bandpass voicingstrengths, one overall voiced/unvoiced flag, and one voicing parametercalled the “jitter flag.”

[0102] Simply using the MELP overall voicing bit to determine both halfframe LPC voicing bits does not provide good performance. The voicingconversion process performed in step 412 achieves better perceptualperformance by assigning values to the LPC voicing bits based on theMELP bandpass voicing strengths, the MELP overall voicing bit, and thefirst reflection coefficient RC′[0] (after preemphasis addition)received from preemphasis addition unit 406. A preferred decisionalgorithm is described by the following C-code segment:

[0103] Ipc->voice[0]=lpc->voice[1]=(melp->uv_flag+1)%2; flag = 0; for(i=0; i<NUM_BANDS; i++)   flag += (int)melp->bpvc[i]; if ((flag <= 4) &&(rc'[0] < 0.0))   lpc->voice[0] = lpc->voice[1] = 0;

[0104] where lpc->voice[ ] are the half-frame LPC voicing bits(1=voiced), flag is an integer temporary variable, melp->uv_flag is theMELP overall unvoiced flag (0=voiced), melp->bpvc[ ] are the bandpassvoicing strengths (0.0 or 1.0, with 1.0=voiced), and rc′[0] is the firstreflection coefficient (computed from the spectrum after preemphasisaddition).

[0105] As illustrated by the above code, initially both LPC voicing bitsare set to one (voiced) if the MELP overall unvoiced flag equals zero(voiced). Otherwise, the LPC voicing bits are set to one (unvoiced). Toimprove the output sound performance, both LPC voicing bits are set tozero (unvoiced) if the first reflection coefficient RC′[0] is negative,and the total number of MELP bands which are voiced is less than orequal to four. The reason this last improvement is performed is asfollows. The MELP voicing analysis algorithm will occasionally set apartially voiced condition (lower bands voiced, upper bands unvoiced)when the input signal is actually unvoiced. Unvoiced signals typicallyhave a spectrum that is increasing in magnitude with frequency. Thefirst reflection coefficient RC′[0] provides an indication the spectralslope, and when it is negative, the spectral magnitudes are increasingwith frequency. Thus, this value can be used to correct the error.

[0106] Note that this type of voicing error is generally not apparentwhen a MELP speech decoder is used, since the signal power from theunvoiced bands masks the (incorrect) voiced excitation. However, if theerror is propagated into the LPC speech decoder, it results in aperceptually annoying artifact.

[0107] In step 414, pitch and voice are encoded together using thestandard LPC-10 quantization algorithm. According to the LPC standard,pitch and voicing are encoded together.

[0108] c. Pitch Conversion

[0109] In step 416, the MELP pitch parameter is converted to an LPC-10pitch parameter by taking the inverse logarithm of the MELP pitchparameter (since the MELP algorithm encodes pitch logarithmically). Instep 418, the resulting LPC-10 pitch parameter is quantized according tothe LPC-10 pitch quantization table.

[0110] In step 414, pitch and voice are encoded together using thestandard LPC-10 quantization algorithm.

[0111] d. Gain (RMS) Conversion

[0112] As described previously, the MELP algorithm produces twohalf-frame logarithmically encoded gain (RMS) parameters per frame,whereas LPC produces a single RMS gain parameter per frame. In step 420,the inverse logarithm of each MELP half-frame gain parameter is taken.In step 424, the two resulting values are scaled to account forpreemphasis addition which occurred in step 406 (similar to the gainscaling step 320 for the LPC-to-MELP transcoder described above). Morespecifically, both gain values are scaled by the ratio of the LPCpredictor gain parameters derived from the spectrum before and afterpreemphasis addition. This LPC gain ratio is calculated in step 422 foreach new frame of parametric data. If${lpcgain1} = \frac{1}{\sqrt{\prod\limits_{i}\left( {1 - {{rc}^{2}(i)}} \right)}}$

[0113] is defined as the synthesis filter gain before preemphasisaddition and${lpcgain2} = \frac{1}{\sqrt{\prod\limits_{i}\left( {1 - {{rc}^{\prime \quad 2}(i)}} \right)}}$

[0114] is defined as the synthesis filter gain after preemphasisaddition, then the scaling factor to be used for both MELP gains is${scale} = \frac{lpcgain2}{8*{lpcgain1}}$

[0115] The factor of 8 is included to accommodate the 13 bit input andoutput sample scaling in LPC-10 (MELP utilizes 16 bit input and outputsamples). In step 424, both gain values are scaled by the above scalingvalue. The output of step 424 will be referred to as the “scaled MELPgains.”

[0116] In step 426, the LPC gain parameter is nominally set to thelogarithmic average of the two scaled MELP gains. An adaptive combineralgorithm is then used to preserve plosive sounds by utilizing theLPC-10 synthesizer's ability to detect and activate the “impulsedoublet” excitation mode. To explain, LPC-10 synthesizers use an“impulse doublet” excitation mode which preserves plosive sounds likethe sounds of the letters ‘b’ and ‘p’. If the LPC synthesizer senses astrong increase in gain, it produces an impulse doublet. This keeps the‘b’ and ‘p’ sounds from sounding like ‘s’ or ‘f’ sounds.

[0117] The algorithm used in step 426 is described as follows. First,the LPC gain parameter is nominally set to the logarithmic average ofthe two scaled MELP gains. Next, if it is determined that there is alarge increase between the first and second half-frame scaled MELPgains, and the current and last transcoded frames are unvoiced, then theLPC gain parameter is set equal to the second half-frame scaled MELPgain. This emulates the adaptively-positioned analysis window used inLPC analysis and preserves LPC-10 synthesizer's ability to detect andactivate the “impulse doublet” excitation mode for plosives. In otherwords, this method preserves sharp changes in gain to allow the LPCsynthesizer to reproduce the ‘b’ and ‘p’ type sounds effectively.

[0118] In step 428, the LPC gain parameter is then quantized and encodedaccording to the quantizer tables for the LPC-10 standard algorithm.

[0119] In step 430, the encoded LPC spectrum, voicing, pitch, and gainparameters are inserted into a LPC frame and forward error correction(FEC) coding is added. An output bit stream representing the LPC framesis produced.

[0120] 4. LPC to TDVC Transcoder

[0121]FIG. 5 illustrates a transcoding method 300 for converting a bitstream representing LPC-10 encoded frames to a bit stream representingTDVC encoded frames. In step 502, an incoming bit stream is received.The incoming bit stream represents LPC-10 frames containing LPC-10parameters. In step 302, forward error correction (FEC) decoding isperformed on the incoming bit stream. The LPC-10 frames are also decodedby extracting the LPC-10 spectrum, pitch, voicing, and gain parametersfrom the LPC-10 frames. The LPC-10 parameters are then distributed tosteps 504, 514, and 526 for conversion to LPC-10 spectrum, voicing, andgain parameters, respectively (no conversion of pitch is necessary asdescribed below). The method of transcoding from LPC-10 parameters toTDVC parameters can be divided into 2 types of operations: 1) conversionfrom LPC-10 parameters to TDVC parameters, and 2) frame interpolation tosynchronize the different frame sizes. The frame interpolationoperations are performed in steps 508, 516, 520, and 528 forinterpolation of spectrum, voicing, pitch, and gain parameters,respectively. In the discussion that follows, the conversion steps willbe discussed first, followed by a discussion of the frame interpolationsteps.

[0122] a. Spectrum Conversion

[0123] While the LPC-10 analysis algorithm applies preemphasis beforespectral analysis, the TDVC analysis does not, so the TDVC synthesizerexpects spectral coefficients that were extracted from a nominal inputsignal. Thus, the preemphasis effects must be removed from the LPCspectral parameters.

[0124] In step 504, the LPC-10 reflection coefficients (RC) areconverted to their equivalent normalized autocorrelation coefficients(R) using well known transformations. In order to avoid truncationeffects in subsequent steps, the autocorrelation conversion recursion iscarried out to 50 lags (setting RCs above order 10 to zero). Theresulting values for the. autocorrelation coefficients (R) are storedsymmetrically in a first array.

[0125] In step 506, the preemphasis is removed in the correlationdomain, described as follows. The symmetrical autocorrelationcoefficients (HH) of the deemphasis filter are calculated beforehand andstored in an array. The deemphasis filter is a single pole IIR filterand is generally the inverse of the preemphasis filter, but differentpreemphasis and deemphasis coefficients may be used. The LPC-10 standarduses 0.9375 for preemphasis and 0.75 for deemphasis. Because thedeemphasis filter has IIR characteristics, the autocorrelation functionis carried out to 40 lags. The autocorrelation values (HH) are obtainedby convolving the impulse response of the filter.

[0126] A modified set of spectral autocorrelation coefficients iscalculated via convolving the R values with the HH values:${R^{\prime}(k)} = {\sum\limits_{i}{{R\left( {i + k} \right)}*{{HH}(i)}}}$

[0127] The resulting modified autocorrelation coefficients R′ areconverted to both reflection coefficients (RC′) and predictor filtercoefficients (A′). The stability of the synthesis filter formed by thecoefficients is checked; if the filter is unstable, the maximum orderstable model is used (e.g. all RC's up to the unstable coefficient areused for the conversion to A′ coefficients). The RC′ values are savedfor use by step 524 in calculating the TDVC gain, discussed furtherbelow.

[0128] The final step in the preemphasis removal process is to convertthe deemphasized predictor filter coefficients (A′) to line spectrumfrequencies (LSF) in preparation for frame interpolation in step 508.Frame interpolation, in step 508, is described in section e. below.

[0129] b. Voicing Conversion

[0130] In step 514, LPC-10 voicing parameters are converted to TDVCvoicing parameters. The TDVC voicing parameter is called the “voicingcutoff frequency parameter” fsel (0=fully unvoiced, 7=fully voiced). TheTDVC voicing cutoff frequency parameter fsel indicates a frequency abovewhich the input frame is judged to contain unvoiced content, and belowwhich the input frame is judged to contain voiced speech. On the otherhand, LPC-10 uses a simple, half-frame on/off voicing bit.

[0131] Step 514 takes advantage of the expanded fsel voicing feature ofthe TDVC synthesizer during transitional periods such as voicing onset.The following C-code segment illustrates a method of converting LPC-10voicing bits to TDVC voicing cutoff frequency parameter fsel:

[0132] /* mid-frame onset */ if ((lpc->voice[0]==0) &&(lpc->voice[1]==1))  fselnew = 2; /* fully voiced */ else if((lpc->voice[0]==1) && (lpc->voice[1]==1))  fselnew = 7; /* fullunvoiced and mid-frame unvoiced transition */ else  fselnew = 0;

[0133] where lpc->voice[0] and lpc->voice[1] are the half-frame LPCvoicing bits (0=unvoiced), and fselnew is the TDVC fsel parameter.According to the TDVC standard, fselnew=0 corresponds to 0 Hz (DC) andfselnew=7 corresponds to 4 KHz, with each fselnew value equally spaced562 Hz apart. The effect of the method illustrated by the above code isthat when a mid-frame transition from the LPC unvoiced to voiced stateoccurs, the TDVC voicing output changes in a gradual fashion in thefrequency domain (by setting fsel to an intermediate value of 2). Thisprevents a click sound during voicing onset and thereby reducesperceptual buzziness in the output speech.

[0134] c. Pitch Conversion

[0135] No conversion is required to convert from the LPC-10 pitchparameter to TDVC pitch parameter; the LPC-10 pitch parameter is simplycopied to a temporary register for later interpolation in step 520,described below.

[0136] d. Gain (RMS) Conversion

[0137] In step 526, an adjustment for preemphasis removal must be madeto the LPC gain parameter before it can be used in a TDVC synthesizer.This preemphasis removal process is described as follows.

[0138] The LPC gain parameter is scaled by the LPC gain ratio. The LPCgain ratio is calculated in step 524 for each new frame of data. The LPCgain ratio is the ratio of LPC predictor gains derived from the spectrumbefore and after preemphasis removal (deemphasis addition). If${lpcgain1} = \frac{1}{\sqrt{\prod\limits_{i}\left( {1 - {{rc}^{2}(i)}} \right)}}$

[0139] is defined as the synthesis filter gain before preemphasisaddition and${lpcgain2} = \frac{1}{\sqrt{\prod\limits_{i}\left( {1 - {{rc}^{\prime \quad 2}(i)}} \right)}}$

[0140] is defined as the synthesis filter gain after preemphasisaddition, then the scaling factor (LPC Gain Ratio) to be used for theLPC RMS is ${scale} = \frac{8*{lpcgain2}}{lpcgain1}$

[0141] This scale factor is the LPC Gain Ratio. The factor of 8 isincluded to accommodate the 13 bit input and output sample scaling inLPC-0 (TDVC utilizes 16 bit input and output samples). The scalingperformed by step 526 is required because the LPC RMS gain is measuredfrom the preemphasized input signal, while the TDVC gain is measuredfrom the nominal input signal.

[0142] e. Frame Interpolation

[0143] Because LPC-10 and TDVC use different frame sizes (22.5 and 20msec, respectively), a frame interpolation operation must be performed.To keep time synchronization, 8 frames of LPC parameter data must beconverted to 9 frames of TDVC parameter data. A smooth interpolationfunction is used for this process, based on a master clock counter 510that counts LPC frames on a modulo-8 basis from 0 to 7. At startup, themaster clock counter 510 is initialized at 0. A new frame of LPCparameter data is read for each count; after all interpolationoperations (described below), then “new” LPC parameter data is copiedinto the “old” parameter data area, and the master clock counter 510 isincremented by 1, with modulo 8 addition. The following interpolationweights are used to generate a set of TDVC parameter data from the “new”and “old” transformed LPC data:${wold} = {2.5*\left\lbrack \frac{clock}{20} \right\rbrack}$

 wnew=1.0−wold

[0144] Note that at startup (clock=0), wold is set to zero, while wnewis set to 1.0. This is consistent with the LPC frame read schedule, asthe contents of the “old” data area are undefined at startup. When themaster clock counter 510 reaches 7, two frames of TDVC data are written.The first frame is obtained by interpolating the “old” and “new”transformed LPC data using the weights given by the equations above. Thesecond frame is obtained by using the “old” transformed LPC data only(the same result as if master clock 510 were set to 8). The master clock510 is then reset to 0 and the process begins again.

[0145] The interpolation equations for each TDVC parameter are asfollows. Linear interpolation is used for line spectrum frequencies instep 508:

lsf(i)=wold*lsfold(i)+wnew*lsfnew(i)

[0146] where lsfnew( ) and lsfold( ) correspond to the “new” and “old”LSF data sets described above. The voicing parameter fsel is alsolinearly interpolated in step 516:

fsel=wold*fselold+wnew*fselnew

[0147] Likewise for the pitch in step 520:

TDVCpitch=wold*LPCpitchold+wnew*LPCpitchnew

[0148] Finally, the gain (RMS) is logarithmically interpolated in step528. Using the scaled LPC RMS values derived above, the TDVC gain can becomputed using the following C-code segment:

TDVCgain=pow(10.0,wold*log10(LPCscaledRMSold)+wnew*log10(LPCscaledRMSnew));

[0149] The interpolated spectrum, voicing, pitch and gain parameters arethen quantized and encoded according to the TDVC standard algorithm insteps 512, 528, 522, and 530, respectively. In step 532, the encodedTDVC spectrum, voicing, pitch, and gain parameters are inserted into aTDVC frame and forward error correction (FEC) coding is added. An outputbit stream representing the TDVC frames is transmitted.

[0150] 5. MELP to TDVC Transcoder

[0151]FIG. 6 illustrates a transcoding method 600 for converting a bitstream representing MELP encoded frames to a bit stream representingTDVC encoded frames. In step 602, an incoming bit stream is received.The incoming bit stream represents MELP frames containing MELPparameters. In step 602, forward error correction (FEC) is decodingperformed on the incoming bit stream. The MELP frames are also decodedby extracting the MELP spectrum, pitch, voicing, and gain parametersfrom the MELP frames. The MELP parameters are then distributed to steps604, 612, 618 and 624 for conversion to TDVC spectrum, voicing, pitchand gain parameters, respectively.

[0152] The method of transcoding from MELP to TDVC can be divided into 2types of operations: 1) conversion from MELP parameters to TDVCparameters, and 2) frame interpolation to synchronize the differentframe sizes. The frame interpolation operations are performed in steps606, 614, 620, and 628 for interpolation of spectrum, voicing, pitch,and gain parameters, respectively. In the discussion that follows, theconversion steps will be discussed first, followed by a discussion ofthe frame interpolation steps.

[0153] a. Spectrum Conversion

[0154] In step 604, the MELP LSFs are scaled to convert to TDVC LSFs.Since MELP and TDVC both use line spectrum frequencies (LSFs) totransmit spectral information, no conversion is necessary except for amultiplication by a scaling factor of 0.5 (to accommodate conventiondifferences).

[0155] b. Voicing Conversion

[0156] In step 612, the MELP voicing parameters are converted to TDVCvoicing parameters. As described previously, TDVC employs a singlevoicing cutoff frequency parameter (fsel: 0=fully unvoiced, 7=fullyvoiced) while MELP uses an overall voicing bit and five bandpass voicingstrengths. The TDVC voicing cutoff frequency parameter fsel (alsoreferred to as the voicing cutoff frequency “flag”) indicates afrequency above which the input frame is judged to contain unvoicedcontent, and below which the input frame is judged to contain voicedspeech. The value of the voicing cutoff flag ranges from 0 forcompletely unvoiced to 7 for completely voiced.

[0157] The following C-code segment illustrates a conversion of the MELPvoicing data to the TDVC fsel parameter by selecting a voicing cutofffrequency fsel that most closely matches the upper cutoff frequency ofthe highest frequency voiced band in MELP: if (melp->uv_flag == 1) fselnew = 0; else {  for (i=4; i>=0; i−−)   if (melp->bpvc[i] == 1.0)break;  r0 = 1000.0*(float)i;  if (r0 == 0.0) r0 = 500.0;  if (r0 < 0.0)r0 = 0.0;  for (i=0; i<=7; i++)   if (abs((int)((float)i*571.4286 − r0))< 286) break;  fselnew = i;  }

[0158] where melp->uv_flag is the MELP overall unvoiced flag (0=voiced),melp->bpvc[ ] are the bandpass voicing strengths (0.0 or 1.0, with1.0=voiced), r0 is a temporary floating point variable, and fselnew isthe TDVC fsel parameter.

[0159] As illustrated by the above code, the highest voiced frequencyband in MELP is first identified. The frequency cutoffs for the MELPfrequency bands are located at 500 Hz, 1000 Hz, 2000 Hz, and 3000 Hz.The frequency cutoff of the highest voiced band in MELP is used tochoose the nearest corresponding value of fsel.

[0160] c. Pitch Conversion

[0161] In step 618, the MELP pitch parameters are converted to TDVCparameter. Since MELP pitch is logarithmically encoded, the TDVC pitchparameter (pitchnew) is obtained by taking an inverse logarithm of theMELP pitch parameter, as illustrated the following equation:

pitchnew=10^(MELPpitch)

[0162] d. Gain Conversion

[0163] In steps 624 and 626, the MELP gain parameters are converted toTDVC. There are 2 logarithmically-encoded half frame MELP gains perframe. These are decoded to linear values and then logarithmicallyaveraged to form a single TDVC gain per frame. (They can also be left inthe log domain for averaging to save computational cycles.) Thefollowing C-code segment performs this function:

gainnew=pow(10.0, 0.5*log10(melp->gain[0])+0.5*log10(melp->gain[1]));

[0164] where melp->gain[0] and melp->gain[1] are the first and secondMELP half-frame gains (respectively), gainnew is the “new” gain(described below in the section on frame interpolation), pow( ) is the Clibrary power function, and log10 is the C library base-10 logarithmfunction.

[0165] e. Frame Interpolation

[0166] Because MELP and TDVC use different frame sizes (22.5 and 20msec, respectively), an interpolation operation must be performed. Tokeep time synchronization, 8 frames of MELP parameter data must beconverted to 9 frames of TDVC parameter data. A smooth interpolationfunction is used for this process, based on a master clock counter 608that counts MELP frames on a modulo-8 basis from 0 to 7. At startup, themaster clock counter 608 is initialized at 0. A new frame of MELP datais read for each count; after all interpolation operations (describedbelow), then “new” MELP data is copied into the “old” data area, and themaster clock counter 608 is incremented by 1, with modulo 8 addition and“old” transformed MELP data:${wold} = {2.5*\left\lbrack \frac{clock}{20} \right\rbrack}$

 wnew=1.0−wold

[0167] Note that at startup (master clock=0), wold is set to zero, whilewnew is set to 1.0. This is consistent with the MELP frame readschedule, as the contents of the “old” data are is undefined at startup.When the master clock counter 608 reaches 7, two frames of TDVC data arewritten. The first frame is obtained by interpolating the “old” and“new” transformed MELP data using the weights given by the equationsabove. The second frame is obtained by using the “old” transformed MELPdata only (the same result as if clock were set to 8). The master clock608 is then reset to 0 (via the modulo-8 addition) and the processbegins again.

[0168] The interpolation equations for each TDVC parameter are asfollows. Linear interpolation-is used for line spectrum frequencies instep 606:

TDVClsf(i)=wold*lsfold(i)+wnew*lsfnew(i)

[0169] where lsfnew( ) and lsfold( ) correspond to the “new” and “old”LSF sets described above. The voicing parameter fsel is also linearlyinterpolated in step 614:

TDVCfsel=wold*fselold+wnew*fselnew

[0170] Likewise for the pitch in step 620:

TDVCpitch=wold*pitchold+wnew*pitchnew

[0171] Finally, the gain (RMS) is logarithmically interpolated in step628. Using the scaled LPC RMS gain values derived above, the TDVC gaincan be computed using the following C-code segment in step 628:

TDVCgain=pow(10.0, wold*log10(gainold)+wnew*log10(gainnew));

[0172] The interpolated spectrum, voicing, pitch, and gain parametersmay now be quantized and encoded according to the TDVC standardalgorithms in steps 610, 616, 622, and 630, respectively. In step 632,the encoded TDVC spectrum, voicing, pitch, and gain parameters areinserted into a TDVC frame and forward error correction (FEC) coding isadded. An output bit stream representing the TDVC frames is transmitted.

[0173] 6. TDVC to LPC Transcoder

[0174]FIG. 7 illustrates a transcoding method 700 for converting fromTDVC encoded frames to LPC-10 encoded frames. The transcoding conversionfrom TDVC to LPC-10 consists of 2 operations: 1) conversion from MELPparameters to TDVC parameters, and 2) frame interpolation to synchronizethe different frame sizes.

[0175] In step 702, an incoming bit stream is received. The incoming bitstream represents TDVC frames containing TDVC parameters. In step 702,forward error correction (FEC) decoding is performed on the incoming bitstream. The TDVC frames are also decoded by extracting the TDVCspectrum, pitch, voicing, and gain parameters from the TDVC frames.

[0176] a. Spectrum Conversion, Part 1 (Step 704)

[0177] In step 704, the TDVC line spectrum frequencies (LSFs) aretransformed into predictor filter coefficients (A) using well knowntransformations. Next, adaptive bandwidth expansion is removed from theTDVC predictor filter coefficients A. Adaptive bandwidth expansion isused by TDVC but not by LPC (i.e., adaptive bandwidth expansion isapplied during TDVC analysis but not by LPC analysis). When convertingfrom TDVC to LPC, removing the adaptive bandwidth expansion effects fromthe spectral coefficients sharpens up the LPC spectrum and makes theresulting output sound better. The adaptive bandwidth expansion isremoved by the following process:

[0178] 1) The original bandwidth expansion parameter gamma is calculatedvia:${gamma} = {{MIN}\left\lbrack {1.0,{\frac{{pitch} - 20}{1000} + 0.98}} \right\rbrack}$

[0179]  where pitch is the TDVC pitch parameter.

[0180] 2) Next, the reciprocal of gamma is calculated(rgamma=1.0/gamma).

[0181] 3) The predictor filter coefficients A are then scaled accordingto

a′(i)=(rgamma)^(i) a(i)

[0182] 4) The new coefficient set a′(i) is checked for stability. Ifthey form a stable LPC synthesis filter, then the modified coefficientsa′(i) are used for further processing; if not, the original coefficientsa(i) are used.

[0183] 5) The selected coefficient set (either a(i) or a′(i)) is thenconverted back into LSFs for interpolation using well knowntransformations.

[0184] b. Frame Interpolation

[0185] Because LPC-10 and TDVC use different frame sizes (22.5 and 20msec, respectively), an interpolation operation must be performed.Interpolation of the spectrum, voicing, pitch, and gain parameters isperformed in steps 706, 714, 720, and 724, respectively.

[0186] To keep time synchronization, 9 frames of TDVC parameter datamust be converted to 8 frames of TDVC parameter data. A smoothinterpolation function is used for this process, based on a master clockcounter 708 that counts LPC frames on a modulo-8 basis from 0 to 7. Atstartup, the count is initialized to zero. On master clock=0, twosequential TDVC data frames are read and labeled as “new” and “old”. Onsubsequent counts, the “new” frame data is copied into the “old” framedata area, and the next TDVC frame is read into the “new” data area. AllTDVC parameters are interpolated using the following weightingcoefficients:${wnew} = {2.5*\left\lbrack \frac{\left( {{clock} + 1} \right)}{22.5} \right\rbrack}$

 wold=1.0−wnew

[0187] Note that all parameters are interpolated in their TDVC format(e.g. spectrum in LSFs and voicing in fsel units). This produces bettersuperior sound quality output, than if interpolation is performed in theLPC format.

[0188] The following adaptive interpolation technique is also used toimprove plosive sounds. If a large change is detected in the TDVCparameters, an adjustment is made to the interpolation weightingcoefficients. Specifically, 1) if the spectral difference between the“new” and “old” LSF sets is greater than 5 dB and 2) if the absolutedifference between the “new” and “old” fsel parameters is greater thanor equal to 5, and 3) the ratio of the “new” and “old” TDVC gainparameters is greater than 10 or less than 0.1, the following adjustmentis performed (C-code): if (master_clock <= 3) {  wnew = 0.0;  wold =1.0; } else {  wnew = 1.0;  wold = 0.0; }

[0189] The Interpolation Controller 708 handles this adjustment andchanges the weighting coefficients wnew and wold for all fourinterpolation steps 706, 714, 720, and 724. A illustrated by the abovecode, if master clock 708 is at the beginning portion of theinterpolation cycle (less than or equal to three) then the LPC outputparameters (including spectrum, voicing, pitch and gain) will be fixedto the old LPC output. If the clock is at the end portion of theinterpolation cycle (greater than three), then the LPC output (spectrum,voicing, pitch and gain) is fixed to the new LPC set. This adjustmentemulates the adaptively-positioned analysis window used in LPC analysisand preserves LPC-10 synthesizer's ability to detect and activate the“impulse doublet” excitation mode for plosives. This preserves the sharpdifference of plosive sounds and produces a crisper sound.

[0190] c. Spectrum Conversion—Part 2

[0191] In step 706, interpolation of the spectral coefficients isperformed. To generate a single set of LPC spectral coefficients fromthe “new” and “old” TDVC LSFs, the LSFs are linearly interpolated usingthe wnew and wold coefficients described above:

lsf(i)=wold*lsfold(i)+wnew*lsfnew(i)

[0192] To complete the conversion of the spectral parameters, in step708, preemphasis is added. The LPC-10 0.9375 preemphasis coefficientmust be superimposed on the spectrum, since TDVC does not usepreemphasis. This is performed in the correlation domain viatransforming the interpolated LSFs into predictor coefficients (A) andthen transforming the predictor coefficients into their equivalentnormalized autocorrelation (R) coefficients and then employing thefollowing operation:

R′(i)=R(i)−0.9375[R(|i−1|)+R(i+1)]+0.9375² R(i)

[0193] where R′(i) are the preemphasized autocorrelation coefficients.Note that the input set of R( )s must be computed out to 11 lags toavoid truncation. The modified autocorrelation coefficients R′(i) arenow transformed back to predictor coefficients A′(i) for furtherprocessing.

[0194] In step 710, formant enhancement is performed on the predictorfilter coefficients A′(i). Formant enhancement has been found to improvethe quality of the transcoded speech. Two methods of formant enhancementare described in detail in sections 12 and 13 below. Section 12describes a method of formant enhancement performed in the correlationdomain. Section 13 describes a second method of formant enhancementperformed in the frequency domain. Both methods of formant enhancementproduce good results. Which one is preferable is a subjectivedetermination made by the listener for the particular application. Forthe TDVC to LPC-10 transcoder, the majority of listeners polled showed aslight preference frequency domain method.

[0195] After the formant enhancement has been applied, the predictorfilter coefficients A′(i) are converted to reflection coefficients (RCs)by well known transformations and quantized according to the LPC-10quantizer tables in step 712.

[0196] d. Voicing Conversion and Jitter Factor Conversion

[0197] Voicing conversion uses the TDVC fsel voicing parameter and thefirst reflection coefficient RC. First, in step 714, the TDVC fselvoicing cutoff frequency parameter is linearly interpolated using thewnew and wold coefficients described above:

fsel=wold*fselold+wnew*fselnew

[0198] where fselold is the “old” value of fsel, and fselnew is the“new” value of fsel.

[0199] In step 716, the fsel voicing parameter is converted to an LPCvoicing parameter. Simply using fsel voicing parameter bit to determineboth half frame LPC voicing bits is inadequate. Additional informationis required for the best perceptual performance. The preferred decisionalgorithm is described by the following C-code segment: if (fsel <= 2) lpc->voice[0] = lpc->voice[1] = 0; else  lpc->voice[0] = lpc->voice[1]= 1; if ((fsel <= 4) && (rc[0] < 0.0))  lpc->voice[0] = lpc->voice[1] =0;

[0200] where lpc->voice[ ] are the half-frame LPC voicing bits(1=voiced), fsel is the interpolated TDVC fsel voicing parameter(0=fully unvoiced 7=fully voiced), and rc[0] is the first reflectioncoefficient (computed from the spectrum after preemphasis addition instep 708).

[0201] As illustrated by the above code, if the TDVC voicing cutofffrequency parameter fsel is less than or equal to 2, then both LPC halfframe voicing bits are set to zero (unvoiced). If fsel is greater than2, then both LPC half frame voicing bits are set to one (voiced). Theexception occurs when fsel<=4 and the first reflection coefficientRC′(0) (after preemphasis addition) is less than zero. In this case,both LPC half frame voicing bits are set to zero (unvoiced). This lastexception is implemented to improve the output sound performance. Thereason this last improvement is performed is as follows. The TDVCvoicing analysis algorithm will occasionally set a partially voicedcondition (fsel>0 but fsel<=4) when the input signal is actuallyunvoiced. Unvoiced signals typically have a spectrum that is increasingin magnitude with frequency. The first reflection coefficient RC′[0]provides an indication the spectral slope, and when it is negative, thespectral magnitudes are increasing with frequency. Thus, this value canbe used to correct the error.

[0202] Note that this type of voicing error is generally not apparentwhen a TDVC speech decoder is used, since the signal power from theunvoiced portion of the excitation masks the (incorrect) voicedexcitation. However, if the error is propagated into the LPC speechdecoder, it results in a perceptually annoying artifact.

[0203] In step 718, pitch and voicing are encoded together using thestandard LPC-10 encoding algorithm.

[0204] e. Pitch Conversion

[0205] In step 720, pitch is converted by linearly interpolating the“new” and “old” values of the TDVC pitch to form a single LPC pitch:

LPCpitch=wold*TDVCpitchold+wnew*TDVCpitchnew

[0206] In step 718, pitch and voicing are encoded together using thestandard LPC-10 quantization algorithm.

[0207] f. Gain (RMS) Conversion

[0208] The first step in converting the TDVC gain to LPC RMS is tologarithmically interpolate the the “new” and “old” values of the TDVCgain in step 724 (C-code example):

LPCrms=pow(10.0, wold*log10(TDVCgainold)+wnew*log10(TDVCgainnew));

[0209] where LPCrms is the intermediate LPC RMS gain, pow( ) is theC-library power function and log10 is the C-library base 10 logarithmfunction.

[0210] In step 728, the gain is scaled to account for the preemphasisaddition performed on the spectral coefficients in step 708. Thefollowing steps are performed to account for preemphasis. First, theintermediate LPC RMS gain value is adjusted by the ratio of the LPCpredictor gains derived from the spectrum before and after preemphasisaddition. This LPC gain ratio is calculated in step 726 for each newframe of data. If${lpcgain1} = \frac{1}{\sqrt{\prod\limits_{i}\left( {1 - {{rc}^{2}(i)}} \right)}}$

[0211] is defined as the synthesis filter gain before preemphasisaddition and${lpcgain2} = \frac{1}{\sqrt{\prod\limits_{i}\left( {1 - {{rc}^{\prime 2}(i)}} \right)}}$

[0212] is defined as the synthesis filter gain after preemphasisaddition, then the scaling factor to be used for the intermediate LPCgain parameter is ${scale} = \frac{lpcgain2}{8*{lpcgain1}}$

[0213] The factor of 8 is included to accommodate the 13 bit input andoutput sample scaling in LPC-10 (TDVC utilizes 16 bit input and outputsamples). This step is required because the LPC gain is measured fromthe preemphasized input signal, while the TDVC gain is measured from thenominal input signal.

[0214] Additional quality improvements may be obtained by providing asmall boost factor for unvoiced signals by utilizing a modified scalingfactor:${scale}^{\prime} = {1.2*\left\lbrack \frac{\left( \frac{lpcgain2}{lpcgain1} \right)^{12}}{8} \right\rbrack}$

[0215] In step 730, the LPC RMS gain is then quantized and encodedaccording to the quantizer tables for the LPC-10 algorithm.

[0216] In step 732, the encoded LPC-10 spectrum, voicing, pitch, andgain parameters are inserted into a LPC frame and forward errorcorrection (FEC) is added. An output bit stream representing the LPCframes is produced.

[0217] 7. TDVC to MELP Transcoder

[0218]FIG. 8 illustrates a transcoding method 800 for converting a bitstream representing TDVC encoded frames to a bit stream representingMELP encoded frames. In step 802, an incoming bit stream is received.The incoming bit stream represents TDVC frames containing TDVCparameters. In step 802, forward error correction (FEC) decoding isperformed on the incoming bit stream. The TDVC frames are also decodedby extracting the TDVC spectrum, pitch, voicing, and gain parametersfrom the TDVC frames. The TDVC parameters are then distributed to steps604, 612, 618 and 624 for conversion to MELP spectrum, voicing, pitchand gain parameters, respectively.

[0219] a. Frame Interpolation

[0220] The process for converting from TDVC to MELP is shown in FIG. 8.Because MELP and TDVC use different frame sizes (22.5 and 20 msec,respectively), an interpolation operation must be performed. To keeptime synchronization, 9 frames of TDVC parameter data must be convertedto 8 frames of LPC parameter data. A smooth interpolation function isused for this process, based on a master clock counter 804 that countsMELP frames on a modulo-8 basis from 0 to 7. On count=0, two sequentialTDVC data frames are read and labeled as “new” and “old”. On subsequentcounts, the “new” frame data is copied into the “old” frame data area,and the next TDVC frame is read into the “new” data area. All TDVCparameters are interpolated using the following weighting coefficients:${wnew} = {2.5*\left\lbrack \frac{\left( {{clock} + 1} \right)}{22.5} \right\rbrack}$

 wold=1.0−wnew

[0221] Note that all parameters are interpolated in their TDVC format(e.g. voicing in fsel units). This was found to produce superior outputsound performance.

[0222] b. Spectrum Conversion

[0223] To generate a single set of MELP LSFs from the “new” and “old”TDVC LSFs, the LSFs are linearly interpolated in step 806 using the wnewand wold coefficients described above:

lsf(i)=2.0*[wold*lsfold(i)+wnew*lsfnew(i)]

[0224] The scaling factor of 2.0 is included (scaling is performed instep 809) because the MELP scaling convention is different than that ofTDVC. The interpolated LSFs are then quantized and encoded in step 810according to the MELP standard.

[0225] The MELP standard also transmits 10 harmonic amplitude valuesthat are used by the MELP synthesizer for generating voiced speech. U.S.Pat. No. 6,098,036 to Zinser et al., “Speech Coding System and MethodIncluding Spectral Formant Enhancer,” (incorporated by reference herein)discloses a spectral formant enhancement algorithm to generate theseharmonic amplitudes. The process described in columns 17 and 18 of theabove patent can be used to generate 10 amplitudes (amp(k), k=1 . . .10) from Equation 7 in column 18. Further enhancement may be achieved byutilizing the method described in Grabb, et al., U.S. Pat. No.6,081,777, “Enhancement of Speech Signals Transmitted Over a VocoderChannel” (also incorporated herein by reference) and modifying the firstthree harmonic amplitudes amp(k) according to the values given in FIG. 5and the accompanying equation. This calculation of harmonic amplitudesis performed in step 807.

[0226] In step 808, the calculated harmonic amplitudes are encoded by aMELP harmonic amplitude encoder. This method of generating harmonicamplitudes for provision to the MELP synthesizer could also be used withthe LPC-to-MELP transcoder described in section 2, above.

[0227] c. Voicing Conversion

[0228] Voicing conversion uses the TDVC fsel voicing parameter (fsel=0indicates fully unvoiced speech, while fsel=7 indicates fully voicedspeech). First, the fsel parameter is linearly interpolated in step 812using the wnew and wold coefficients described above:

fsel=wold*fselold+wnew*fselnew

[0229] Next, the interpolated fsel parameter is converted to the MELPoverall voicing bit and bandpass strengths in step 814 using the C-codesegment below: if(fsel == 0)  melp->uv_flag = 1; else  melp->uv_flag =0; tmp = nint((float)fsel*571.4286/1000.0); tmp = tmp + 1; if (fsel < 2)tmp = fsel; tmp = tmp − 1; for (i=0; i<=tmp; i++)  melp->bpvc[i] = 1.0;for (i=tmp+1; i<=4; i++)  melp->bpvc[i] = 0.0;

[0230] where fsel is interpolated TDVC fsel voicing parameter,melp->uv_flag is the MELP overall unvoiced flag (0=voiced), melp->bpvc[] are the bandpass voicing strengths (0.0 or 1.0, with 1.0=voiced),nint( ) is the nearest integer function, and tmp is an integer temporaryvariable. As illustrated by the above code, all of the MELP bands belowthe TDVC voicing cutoff frequency are set to voiced. The overall voicingbit and the bandpass strengths are then encoded according the MELPstandard in step 816.

[0231] d. Pitch Conversion

[0232] Pitch is converted by linearly interpolating the “new” and “old”values of the TDVC pitch to form a single LPC pitch in step 818:

MELPpitch=wold*TDVCpitchold+wnew*TDVCpitchnew

[0233] In step 820, the logarithm of the pitch is taken. In step 822,the resulting pitch value is then encoded according to the MELPstandard.

[0234] e. Gain Conversion

[0235] The MELP algorithm has the capability to transmit 2 half-framegains per frame. In step 824, an adaptive dual gain interpolation isperformed. This adaptive interpolation is a modification of thewnew/wold interpolation algorithm described above. The wnew/woldinterpolation algorithm has been modified to generate these two gains bymoving the wnew/wold interpolation weights slightly backward in theclock schedule for the first MELP gain, and slightly forward for thesecond MELP gain. These modified weights are used for logarithmicinterpolation. The following C-code segment illustrates one way toimplement this method: wold = wold + 0.1;  /* back up a bit */ if(wold >1.0) wo1d = 1.0; wnew = 1.0 − wold; melp->gain[0] = pow(10.0,wold*log10(0.01 + tdvc->gain[1]) +       wnew*log10(0.01 +tdvc->gain[2])); wold = wold − 0.2;  /* go forward a bit */ if(wold <0.0) wold = 0.0; wnew = 1.0 − wold; melp->gain[1] = pow(10.0,wold*log10(0.01 + tdvc->gain[1]) +       wnew*log10(0.01 +tdvc->gain[2]));

[0236] where melp->gain[0] and melp->gain[1] are the first and secondMELP half-frame gains (respectively), tdvc->gain[1] and tdvc->gain[2]are the “old” and “new” TDVC gains (respectively), pow( ) is the Clibrary power function, and log10 is the C library base-10 logarithmfunction. In steps 826 and 828, the two gains are then logarithmicallyencoded according to the MELP standard.

[0237] In step 830, the encoded MELP spectrum, voicing, pitch, and gainparameters are inserted into a MELP frame and forward error correction(FEC) coding is added. An output bit stream representing the MELP framesis produced.

[0238] 8. Compressed Domain Conference Bridge with Multi-TalkerCapability

[0239] Conference bridging technology has been available for many yearsto users of the Public Switched Telecommunications Network (PSTN). Thistechnology enables multiple users in remote locations to participate ingroup discussions. Generally, a conventional bridge uses a summationmatrix that supplies an adaptive combination of the incoming signals toeach conference participant. The adaptive combination algorithm isdesigned to attenuate signals from incoming lines that are not activelycarrying a voice signal. Therefore, only a signal voice will be carriedat any one time in the conventional bridge system.

[0240] In both commercial and military applications, it is desirable tohave conference bridge functionality available when using very low rate(2.4 kb/sec and below) digital communication channels. Because eachconference participant is allotted a maximum of 2.4 kb/sec, the designand implementation of such a bridge poses several challenges. Most ofthese challenges are caused by the limitations of vocoders operating atlow rates. The major issues are:

[0241] 1. Current-generation 2.4 kb/sec vocoders are unable to transmitmultiple talkers simultaneously without near total loss ofintelligibility. This precludes use of the conventional summation matrixdescribed above.

[0242] 2. Conventional conference bridge designs require decoding theincoming 2.4 kb/sec bit stream to a speech waveform for processing (suchas speech activity detection). The speech must then be re-encoded fortransmission to the participants. This encode/decode/encode/decodeprocess is known a tandem connection and greatly decreases thesubjective quality of the speech.

[0243] 3. To be useful, bridge systems must support multiple codingstandards. In most cases, the vocoders are incompatible with each other(e.g. LPC-10, MELP, TDVC). For this reason, direct input to outputbitstream transfers cannot be used for interconnection, and theabove-mentioned tandem connection is clearly less-than-optimal.

[0244] This present invention includes an architecture for a compresseddomain conference bridge that surmounts the problems described above.Central to the conference bridge structure is the concept of transcodingbetween different coding standards, as described in sections 1-7 above.The compressed domain bridge of the present invention is designed to beof low computational complexity in order to keep power consumption aslow as possible. This is especially important for space-basedapplications such as use on satellites.

[0245] The basic idea of the compressed domain conference bridge of thepresent invention is to perform most bridging operations in thecompressed (rather than signal) domain. The compressed domain conferencebridge is designed to provide most of the services available on aconventional bridge, but maintain full intelligibility for all users(even when there are multiple simultaneous talkers). In addition,multiple types of low-rate vocoder algorithms are supported, including aspecial hybrid-dual/single talker receiver that will allow a user tohear 2 simultaneous talkers over a single 2400 bit/second channel. Thishybrid-dual/single talker receiver is described in detail in section 9,below, and FIG. 10.

[0246] a. Parameter Decoding and CDVAD

[0247]FIG. 9 depicts a block diagram illustrating a typical compresseddomain conference bridge 900. The incoming bit streams from N differentconference participants (users) are first decoded into vocoderparametric model data by respective parameter decoder units 902 (User1's transmission bit stream is decoded by decoder unit 902-1, User 2'stransmission bit stream is decoded by decoder unit 902-2, and so forth).The parameters for each stream are then analyzed to determine whichstream(s) carry an active voice signal by a corresponding CompressedDomain Voice Activity Detector (CDVAD) 904. The Compressed Domain VoiceActivity Detector according to the present invention is described indetail in section 10, below.

[0248] CDVAD 904 determines which incoming bit streams contain a realvoice signal; this information is used by Bridge Control Algorithm 950to determine which channels contain speech, and thus which channelsshould be transmitted to the User receivers, as described further below.

[0249] b. Frame Interpolation

[0250] Because users of the conference bridge may be using differentvocoder algorithms that do not necessarily have the same frame size,frame interpolators 906 perform frame interpolation. For example,suppose a user with a 20 msec frame size has to be connected to anotheruser with a 22.5 msec frame size. In this case, frame interpolator unit104 converts 9 frames of 20 msec parameter data to 8 frames of 22.5 msecdata. This is accomplished in a smooth, continuous manner by frameinterpolator 906. See the frame interpolation sections in sections 4-7above for a description of this type of interpolation algorithm.

[0251] Note that FIG. 9 shows a frame interpolator 906 on the decodingside of the conference bridge (i.e. to the left of primary/secondarytalker bus 910) and a frame interpolator 912 on the encoding side of theconference bridge (i.e. to the right of primary/secondary talker bus910). Only one of these frame interpolators is necessary. Whether to usea frame interpolator on the encoding side or decoding side of theconference is bridge is a choice based on which location produces thebest perceptual quality in the output speech.

[0252] c. Bridge Control and Multi-Talker Capability

[0253] Bridge control algorithm 950 next determines which incomingchannels will be converted for transmission over the bridge to thereceivers. Here we introduce the concept of the primary and secondarytalker channels. Previous research has shown that during typical voiceconferences, there are rarely more than two participants talking atonce. Consequently, the compressed domain bridge 900 has been designedaround this factor, with the capability to transmit two simultaneoustalkers to participants. This design also yields significant savings incomputational complexity, because a maximum of 2 users per vocoder typemust be encoded for transmission.

[0254] A note on the conference participant's equipment is in orderhere. The current implementation of the bridge is designed to work withseveral different types of vocoders (e.g. LPC-10, MELP, and TDVC),including the hybrid-dual/single talker (D/ST) receiver mentioned aboveand described in section 9, below. The D/ST receiver is capable ofreceiving and decoding a single talker bitstream (at approximately 2400b/sec) or a dual talker bitstream (2×1200 b/sec), and dynamicallyswitching between the two formats as the call progresses. The switchingis accomplished without artifacts or noticeable degradation.

[0255] During the course of a conference call, if only one participantis speaking, then the bridge sends the D/ST receiver a single talkerstream. If two participants are speaking simultaneously, the bridge willsend the D/ST receiver the vocoder parameters for both participants inthe 2×1200 b/sec dual talker format. The reason for designing the systemin this fashion is that the reproduction quality for the 1200 b/secformat is not as good as the 2400 b/sec single talker format. Byswitching dynamically between the two formats, the system cancontinuously provide each user with the highest quality reproductiongiven the input conditions.

[0256] Another desirable feature for a conference bridge is the abilityto assign priorities to the participants to regulate access toretransmission over the bridge. A participant with a higher prioritywill take precedence over a lower priority user when both are talking atthe same time. To accommodate prioritization and the dual speaker modeof operation described above, the concept of primary and secondarytalker channels has been developed. The talker channels are selectedusing 1) the pre-set priority of each user for retransmission, and 2)which users are actually talking (as indicated by the CDVAD units 904).The bridge control algorithm 950 selects the primary and secondarytalkers using the following algorithm:

[0257] No user talking: highest priority user is primary

[0258] second highest priority user is secondary

[0259] 1 user talking: talking user is primary

[0260] non-talking user with highest priority is secondary

[0261] 2 users talking: highest priority talking user is primary

[0262] other user who is talking is secondary

[0263] >2 users talking: highest priority talking user is primary

[0264] second highest priority talking user is secondary

[0265] Note that there are always primary and secondary talker channelsselected, even if there are no users actively talking. This ensures thatthe conference bridge will always function like a normal full-duplextelephone call if there are only 2 users. For calls with more than 2users, all non-talking users on the bridge will receive either theprimary or the combined primary and secondary signals (if they have D/STcapability).

[0266] There are a few special rules applying to the selected primaryand secondary talkers. The first rule is that the primary talker's audiois never transmitted back to his/her receiver. The primary talker willalways receive the secondary talker's audio. In a similar fashion, thesecondary talker will always receive the primary talker's audio. Tominimize potential user confusion, a primary or secondary talker is notallowed to receive a dual-talker bitstream (this would require a thirdtalker path through the bridge if the first 2 rules are applied, andsome participants would be receiving different streams than others).

[0267] d. Transcoding

[0268] After the primary and secondary talker channels are selected bybridge control algorithm 950, the decoded vocoder parameters for theprimary and secondary talker channels can be loaded into associatedparameter structures for transcoding by transcoders 908. Transcoding isnecessary when there are users with different vocoder types areparticipating in the conference. Some different types of transcodingoperations in the compressed domain are fully described in sections 1-7.

[0269] Transcoding is performed by the transcoder 908 in thecorresponding primary talker channel and the transcoder 908 in thecorresponding secondary talker channel. For example, if bridge controlalgorithm 950 determines that user 2 is the primary talker channel, anduser 7 is the secondary talker channel, then transcoder 908-2 performstranscoding of channel 2 and transcoder 908-7 performs transcoding ofchannel 7, if transcoding is necessary.

[0270] Each transcoder 908 can be configured by bridge control algorithm950 to perform one or more desired transcoding conversions. For example,suppose user 1 is determined to be the primary talker channel, and user1 is transmitting a MELP-encoded bit stream. One of the user receiversconnected to the conference bridge is an LPC receiver, and one userreceiver is a TDVC receiver. Bridge control algorithm 950 thenconfigures transcoder 908-1 to convert user 1's bit stream from MELP toLPC, and from MELP to TDVC. Thus two versions of user 1's bit stream arecreated: one encoded with LPC and one encoded with TDVC. In thisexample, transcoder 908-1 is said to have two “transcoder structures.”One transcoder structure converts MELP to LPC, and the other structureconverts MELP to TDVC.

[0271] The maximum number of transcoder structures required for eachtranscoder 908 is dependent on the number of different vocoder types onthe system and whether any users have dual speaker capability. Becauseof the primary/secondary talker channel architecture, the number oftranscoder structures is not dependent on the number of users. Thisfeature yields a significant memory savings in implementation. The tablebelow gives the maximum number of transcoder structures, taking intoaccount the rules given in the last paragraph. 1 coder type 2 codertypes 3 coder types in call in call in call no D/ST users 0 2 3 at least1 D/ST user 0 2 4

[0272] Because the selection of primary and secondary talkers changesduring the course of the call, the transcoding operation also changesdynamically. A hash table may be used to keep track of conversionoperations handled by each allocated transcoder structure. Thesestructures have a 1-frame vocoder parameter memory. When theconfiguration changes, the memory must be preserved under certainconditions. If the user who was assigned to secondary talker channel isreassigned to the primary talker channel, the memory from the secondarystructure must be transferred to that of the primary. In a similarfashion, if the primary structure memory must be copied to that of thesecondary if the opposite switch occurs. Finally, if a “new” user isselected for the primary or secondary talker channel, the associatedstructure memory is reinitialized.

[0273] e. Dual/Single Talker Encoding

[0274] After transcoding, the bit streams from the primary talker andsecondary talker channels are distributed to the receivers viaprimary/secondary talker bus 910. The bridge control algorithm 950checks to see if there are any valid D/ST users on the system who areeligible to receive a dual-talker format. If the dual-talker conditions(described above) are satisfied, then the eligible users receive boththe primary and secondary talkers in the dual-talker format. If areceiver does not have D/ST capability, then only the primary talker isreceived.

[0275] For each D/ST eligible receiver, D/ST encoder 914-1 encodes thebit streams for the primary and second talker channels into adual-talker format. The dual-talker format consists of two 1200 b/secchannels, one each for the primary and secondary talker channels. Thelow bit rate for each channel is achieved by utilizing three frames ofvocoder parameter data and encoding the most recent two frames at onetime. The details of this encoding technique is described in section 11,below.

[0276] Care must be taken when switching between dual and single talkermodes. Because two frames are encoded at a time in dual-talker mode, aswitch to single-talker mode cannot occur during every other frame.Additional concerns arise when the users assigned to the primary talkerchannel and secondary talker channel change. Because there are 2 framesof vocoder parameter memory in the dual-talker encoder,primary/secondary memory interchanges or re-initialization must beperformed to ensure continuity (as described above in section d).

[0277] f. Other Bridge Functions and Notes

[0278] The relative loudness of each talker can be adjusted throughmanipulation of the vocoder gain or RMS parameter. Because the gainparameters may represent different quantities for different vocoderalgorithms, they must be compared on an equal basis. Sections 1 through7 above (transcoder descriptions) describe how to convert from one gainformat to another.

[0279] A “tone” control function can be applied to emphasize one talkerover another. This can be accomplished through correlation domainconvolution of the spectral prediction coefficients with the desired“tone” shaping filter. For an example of how this is preformed, seesection 2a, above (the preemphasis removal in section 2a is performed bycorrelation domain convolution of the spectral prediction coefficients,and the same technique can be applied here using a tone shaping filter).

[0280] Because the TDVC encoder uses a predictive mode spectral LSFquantizer, special care must be taken when the primary and/or secondarytalkers are changed and when there are dual to single talkertransitions. Continuity is preserved with memory interchanges andpredictor state resets, as described in sections d and e, above.

[0281] 9. Hybrid Dual/Single Talker 2400 b/sec Speech Synthesizer

[0282] A hybrid dual/single talker 2400 b/sec speech synthesizer,hereafter referred to as the “dual synthesizer,” produces a digitalaudio stream by decoding a compressed bit stream that contains, on aframe by frame basis, encoded parameters describing either a singletalker's voice input or encoded parameters describing two simultaneoustalker's voice inputs. The means by which a dual talker compressed bitstream is generated is described in section 11, below. The dualsynthesizer is able to decode such dual-talker bit streams and handletransitions from dual-talker to single-talker modes and vice versawithout introducing objectionable artifacts (audible defects) in theoutput audio.

[0283] For the purposes of description, the dual synthesizer isdescribed below in the context of TDVC, although the dual synthesizercould use any other coding standards such as LPC-10 or MELP.

[0284] The compressed bit stream that is input to Dual Synthesizer 1000is divided into “packets” of two different types: an “S” packet type anda “D” packet type. The two types of packets are structured as follows:

[0285] S<35 bits>

[0286] D<48 bits Talker 1><48 bits Talker 2>

[0287] ‘S’ and ‘D’ represent a one bit tag for either a Single or DualTalker packet. In the context of Single Talker TDVC, a packet containsbits representing a single 20 ms segment of speech. For Dual Talkermode, however, a packet contains a 48-bit “sub-packet” for each talkerthat actually represents two consecutive 20 ms segments of speech.

[0288] The dual synthesizer contains two independent TDVC synthesizers(referred to as primary and secondary synthesizers), and is operating ineither Single or Dual Talker mode at any given time. The primarysynthesizer is active for both Single and Dual Talker mode, while thesecondary synthesizer is active only for Dual Talker mode.

[0289] The Dual Synthesizer operates according to the state diagram 1000shown in FIG. 10. In state diagram 1000, the initial operating mode isassumed to be Single state 1002. As long as ‘S’ packets are received,the Dual Synthesizer stays in this mode. When a ‘D’ packet is received,the operating mode is switched to Dual state 1004. Special processing toaccomplish the transition is described below. As long as ‘D’ packets arereceived, the operating mode is Dual mode 1004. When an ‘S’ packet isreceived, the operating mode switches to “Ringdown” mode 1006 for asmall number of frames, sufficient to let the output of the synthesisfilter for the discontinued talker to ring down. Special transitionprocessing for this transition is also described below.

[0290] a. Single to Dual State Transition Processing

[0291] It is assumed that the Single Mode talker becomes one of the DualMode talkers, as will be the case in the great majority of instances.Because no bits are transmitted to identify whether the Single Modetalker becomes Dual Mode talker 1 or 2, calculations are performed inorder to make a “best guess” determination. Tracking the Single Modetalker into Dual Mode is desirable so that no unnecessarydiscontinuities are introduced into the synthesized speech for thistalker.

[0292] Line Spectral Frequencies coefficients (LSFs), pitch, and gainparameters for both Dual Mode Talkers are decoded. A similarity measureis computed between the decoded parameters for each Dual Mode talker andthe last set of Single Mode parameters, as illustrated by the followingcode excerpt: sim1 = sim2 = 0.0; d1 = euclidian_distance(singlemode_1sf, talker1_1sf, MM ); d2 = euclidian_distance(singlemode_1sf, talker2_1sf, MM ); sim1 = d1/(d1+d2); sim2 = d2/(d1+d2);sim1 += (float)abs(singlemode_pitch − talker1_pitch) /(float)(singlemode_pitch + talker1_pitch); sim2 +=(float)abs(singlemode_ipitch − talker2_pitch) /(float)(singlemode_ipitch + talker2_pitch); d1 =fabs(log(singlemode_gain+20.) − log(talker1_gain+20.)); d2 =fabs(log(singlemode_gain+20.) − log(talker2_gain+20.)); sim1 +=d1/(d1+d2); sim2 += d2/(d1+d2); if(sim1 > sim2) {  /* Single Mode talkerhas become Dual Mode talker 2 */  swap_synthesizer_states(); }

[0293] In the code excerpt above, sim1 and sim2 are the similaritymeasures for Dual Mode talkers 1 and 2, respectively. When sim1 is thesmaller of the two, nothing needs to be done, since the Single Modetalker parameters and Dual Mode talker 1 parameters are both processedby the primary synthesizer. However, when sim2 is smaller, the state ofthe secondary synthesizer is copied over that of the primary before anyprocessing takes place. The secondary synthesizer is reinitialized to aquiescent state before processing in both cases.

[0294] b. Dual to Single State Transition Processing

[0295] The procedure for handling the Dual to Single Mode transition isvery similar to the procedure for the Single to Dual Mode transition. Inthis case, it is assumed that one of the Dual Mode talkers will continueas the Single Mode talker. Once again, parameters are decoded, andsimilarity measures are computed in precisely the same manner asillustrated above. If it appears that Dual Mode talker 1 has become theSingle Mode talker, then nothing need be done; however if it appearsthat Dual Mode talker 2 has become the Single Mode talker, the state ofthe secondary synthesizer is copied over the state of the primarysynthesizer.

[0296] 10. Compressed Domain Voice Activity Detector

[0297] Voice Activity Detection (VAD) algorithms are integral parts ofmany digital voice compression (vocoder) algorithms which are used forcommunication and voice storage applications. The purpose of a VAD is todetect the presence or absence of voice activity in a digital inputsignal. The task is quite simple when the input signal can be guaranteedto contain no background noise, but quite challenging when the inputsignal may include varying types and levels of background noise. Manytypes of VAD have been designed and implemented. Some VAD algorithmsalso attempt to classify the type of speech that is present in a shorttime interval as being either voiced (e.g. a vowel sound, such as longe) or unvoiced (e.g. a fricative, such as ‘sh’). Once the VAD hasclassified an interval of the input signal, the vocoder can tailor itsoperation to the classification. For example, depending on theclassification, a vocoder might encode an input signal interval withmore, less, or even no bits (in the case of silence).

[0298] The object of the compressed domain voice activity detector(CDVAD) of the present invention as described herein is to perform theVoice Activity Detection function given a compressed bit stream(produced by a vocoder) as input, rather than a time domain waveform.Conventional VAD algorithms operate on a time domain waveform. For anexample of a conventional VAD algorithm which operates in the signaldomain, see Vahatalo, A., and Johansson, I., “Voice Activity Detectionfor GSM Adaptive Multi-Rate Codec,” ICASSP 1999, pp. 55-57.

[0299] The Compressed Domain VAD (CDVAD) of the present inventiondecodes the compressed bit stream only to the level of vocoderparametric model data, rather than decoding to a speech waveform.Decoding to vocoder parameters has the advantage of requiring much lesscomputation than decoding to a speech waveform.

[0300] The CDVAD can be used in conjunction with the Compressed DomainConference Bridge 900, described above in section 8. The bridge, and byextension the VAD component, must be of low computational complexity inorder to keep power consumption as low as possible on the satellite. Asdescribed previously, the bridge receives a plurality of compressedvoice bit streams (which need not have been produced by the same type ofvocoder), determines which bit streams contain voice activity, and usedecision logic to select which bit stream(s) to transmit to theconference participants.

[0301] The CDVAD disclosed herein incorporates a modern, fairlyconventional VAD algorithm, but adapts it to operate using compressedvoice parameters rather than a time domain speech waveform. The CDVADcan be adapted to operate with compressed bit streams for many differentvocoders including TDVC, MELP and LPC-10.

[0302]FIG. 11 depicts a block diagram illustrating a CDVAD method 1100.CDVAD method 1100 will first be described with respect to a bit streamrepresenting TDVC parameters. Each frame of TDVC parameters represents20 ms segment of speech. In adapting the CDVAD to the other vocodertypes (e.g. LPC and MELP), only minor transformations of their nativeparameter sets are required, as described below.

[0303] As shown in FIG. 11, CDVAD 1100 receives 4 types of TDVCparameters as inputs: 1) a set of 10 short term filter coefficients inLSF (Line Spectral Frequency) form, 2) frame gain, 3) TDVC-style voicingcutoff flag, and 4) pitch period. As described previously, theTDVC-style voicing cutoff flag 1106 indicates a frequency above whichthe input frame is judged to contain unvoiced content, and below whichthe input frame is judged to contain voiced speech. The value of thevoicing cutoff flag ranges from 0 for completely unvoiced to 7 forcompletely voiced.

[0304] To adapt LPC-10's parameters to the CDVAD, three conversions mustbe performed. LPC-10's short term filter coefficients are converted fromreflection coefficients to LSFs, the frame gain is scaled to adjust forpre-emphasis and different system scaling conventions, and LPC-10'shalf-frame voicing flags are boolean-OR'ed to make them compatible withthe TDVC-style voicing cutoff flag.

[0305] To adapt MELP's parameters to the CDVAD is somewhat easier,because MELP & TDVC both use the LSF representation of short term filtercoefficients. MELP uses two half-frame gains rather than a single framegain value as in TDVC; the larger of MELP's two half-frame gain valuesis used as the overall frame gain by the CDVAD. MELP's band pass voicinginformation is converted to a TDVC-style voicing cutoff flag using asimple mapping similar to the conversion described in section 5b, above(MELP to TDVC transcoder).

[0306] The CDVAD operation is based on spectral estimation, periodicitydetection, and frame gain. The basic idea of the CDVAD shown in FIG. 11is to make the VAD decision based on a comparison between input signallevel and a background noise estimate for each of a plurality offrequency bands, while also taking into account overall frame gain,voicing cutoff frequency, and pitch information.

[0307] In step 1102, the spectral envelope for a frame is computed fromthe input short term filter coefficients (LSFs). From the spectralenvelope, signal levels are computed for each of a number of frequencysub-bands. The signal levels are then normalized by both the overallframe gain and the gain of the short term filter.

[0308] In step 1104, a “pitch flag” is set for the current frame only ifthe pitch has been relatively constant over the current and 2 or moreimmediately preceding frames. In addition, for the pitch parameter to beconsidered valid, the voicing cutoff flag fsel must be greater than 0(i.e. not fully unvoiced).

[0309] In step 1106, the background noise level is estimated for eachsub-band. The normalized sub-band levels from step 1102 and intermediateVAD decision for the current frame (produce by step 1108, discussedbelow) for the current frame are received as inputs to step 1106. Thebackground noise sub-band levels are updated with a weighted sum oftheir current value and the input sub-band levels. However, the weightsfor the summation are varied, depending on several conditions:

[0310] 1) If the intermediate VAD decision=1, indicating the probablepresence of speech, the weights are set such that the background noisesub-band levels can only be updated downwards, to avoid corruption ofthe background noise estimate.

[0311] 2) If the last several (e.g. 4) frames' intermediate VADdecision=0, indicating the probable absence of speech, the weights areset such that the background noise sub-band levels update (upwards ordownwards) relatively quickly.

[0312] 3) If the VAD decision has been=1 for a large number of frames,but the input sub-band levels have shown little variation, the weightsare set such that the background noise sub-band levels update relativelyslowly. This case is exercised both at startup, and when there is anabrupt increase in background noise levels.

[0313] In step 1108, an intermediate VAD decision for the current frameis made. Given the normalized sub-band levels from step 1102, and thebackground noise estimate from step 1106, a signal to noise ratio iscomputed for each sub-band. The ratios are then summed and comparedagainst an experimentally determined threshold. The threshold is sethigher for high background noise situations, and lower for lowbackground noise situations. If the sum is greater than the threshold,voice activity is detected and the intermediate VAD decision is set=1,otherwise it is set=0. The intermediate VAD decision is provided tosteps 1106 and 1110.

[0314] In step 1110, hangover addition is performed. Hangover additionapplies some smoothing to the intermediate VAD decision, to try toensure that the ends of utterances, some of which are quite lowamplitude, are not cut off by the VAD. Hangover addition also removesisolated VAD=0 decisions from the middle of active speech regions. If asufficient number H₁, of consecutive frames have an intermediate VADdecision=1, hangover is enabled, and the final VAD decision will beheld=1 until H₂ consecutive frames with intermediate VAD decision=0 areencountered.

[0315] 11. Low Rate Multi-Frame Encoder and Decoder

[0316] Described as follows is a method for ultra-low rate encoding anddecoding of the parameters used in predictive-style parametric vocoders(e.g. MELP, LPC, TDVC). Although the method of ultra-low rate encodingdescribed herein produces a degradation in sound quality, it is veryuseful for applications where an ultra-low rate is needed. As describedpreviously, one application for this ultra-low rate encoding method isfor use in a dual-talker system that will allow a user to hear 2simultaneous talkers over a single 2400 bit/second channel (thedual-talker format consists of two 1200 b/sec channels within the 2400b/sec channel).

[0317] These encoding and decoding methods are described in thefollowing four sections for pitch, gain, spectrum and voicingparameters. The encoding and decoding methods are described below withrespect to the TDVC coding standard. However, the methods can be appliedto any coding standards using pitch gain, spectrum and frequencyparameters.

[0318] a. Pitch Encoding and Decoding

[0319] A method of multi-frame pitch encoding and decoding will now bedescribed as illustrated by FIG. 12A. During encoding, every two framesof pitch data are combined into a single frame which is transmitted.When the transmitted frame is received by the decoder, the singlereceived frame is converted back to two frames of pitch data.

[0320] The method described below converts two frames of TDVC pitchinformation (a total of 12 pitch bits) into a single transmitted framecontaining a pitch value P consisting of one mode bit and six pitchbits. Thus, the method reduces the number of pitch bits from 12 to 7(per every two TDVC frames encoded).

[0321] At 1202, three frames of data, Frames 0, 1, and 2, are shownprior to encoding. Each frame contains a quantized pitch value which waspreviously generated by an optimal quantizer. During the encodingprocess, the pitch information from Frame 1 and Frame 2 is combined intoa single pitch value P which will be included in the transmitted frameT. In order to determine a value for P, knowledge of the pitch valuefrom the Frame 0, the frame received immediately prior to Frame 1, isrequired.

[0322] At 1204, three frames of decoded data are shown: Frames 0′, 1′,and 2′. During the decoding process, Frame T is converted to two frames:Frame 1′ and 2′ according to the methods described below.

[0323] With regards to the encoding process, the pitch information fromFrame 1 and the pitch information from Frame 2 are converted to a singlepitch value P according to two methods: a Mode 0 method, and a Mode 1method. A distortion value D is then calculated for both the Mode 0 Pvalue, and the Mode 1 P value, as described further below. Thetransmitted value of P which is encoded into the transmitted frame T isdetermined by which mode produces the lowest a lowest distortion valueD. If Mode 0 produces a lower distortion value D then a Mode 0-encodedframe is transmitted. If Mode 1 produces a lower distortion value D,then a Mode 1-encoded frame is transmitted.

[0324] With regards to the decoding process, when the transmitted frameT is received by the decoder, the decoder reads the mode bit of theframe to determine whether the received frame T is a Mode 0-encodedframe or a Mode 1-encoded frame. If frame T is a Mode 0-encoded frame, aMode 0 decoding method is used. If frame T is a Mode 1 encoded frame, aMode 1 decoding method is used. The frame T is thereby decoded into twoFrames: Frame 1′ and Frame 2′.

[0325] The 2 encoding modes and 2 decoding modes are as follows:

[0326] Mode 0 encoding: P is set equal to the Frame 1 six-bit pitchvalue.

[0327] Mode 1 encoding: P is set equal to the Frame 2 six-bit pitchvalue.

[0328] Mode 0 decoding: P is used as the six-bit pitch value for bothFrame 1′ and Frame 2′.

[0329] Mode 1 decoding: The pitch value from Frame 0′ is repeated forFrame 1′, and P is used for Frame 2′.

[0330] For Mode 0, the distortion value (D₀) is calculated by:

D ₀ =|F1−P|+|F2−P|

[0331] where F1 is the 6-bit quantized pitch value for frame 1, F2 isthe 6-bit quantized pitch value for frame 2, and P is the pitch valuethat is transmitted.

[0332] For Mode 0, since P has been set to the value of F1, thedistortion equation reduces to:

D ₀ =|F2−F1|

[0333] For Mode 1, the distortion is:

D ₁ =|F1−F0′|

[0334] since P is set to the value of F2. To select the transmissionmode, choose Mode 0 if Do is less than D₁; choose Mode 1 otherwise.

[0335] Note that if Mode 0 simply chose P to be equal to the F2 six-bitpitch value (or, alternatively, to the average of the F1 and F2 six-bitpitch values) the same equation for Do, above, would result. Because Pis quantized with the same table as F1 or F2, it is computationally moreefficient to use the individual values of F1 or F2 instead of theaverage.

[0336] b. Gain Encoding

[0337] The gain encoding algorithm assumes that an optimal, non-uniformscalar quantizer has already been developed for encoding a single frameof gain. For the purposes of illustration, assume a 5-bit quantizer isin use. The value of the first frame's gain (Frame 1) is encoded usingthis 5-bit quantizer. For the second frame (Frame 2), a 4-bit customquantizer table is generated. The first 9 output levels for the tableconsist of fixed sparse samples of the 5-bit table (e.g. every 3d entryin the table). The next seven output levels are delta-referenced fromthe Frame 1 value. Delta referencing refers to quantizing the Frame 2value as an offset in the quantization table from the Frame 1 value. Theseven delta values supported are 0, +1, +2, +3, −1, −2, and −3. FIG. 12Bshows an example of how the quantizer tables for the 5- and 4-bitalgorithms may be constructed.

[0338] To select the quantization index for the Frame 2 gain, allentries in the Frame 2 table are compared to the gain, and the indexcorresponding to the lowest distortion is transmitted. For example, ifthe Frame 1 gain was quantized to level L18, and the Frame 2 gain isclosest in value to L19, them the D+1 quantization level would beselected for Frame 2. As a second example, suppose the Frame 1 gain wasat level L28, but the Frame 2 gain was closest in value to L4. In thiscase the L3 quantization level would be selected Frame 2.

[0339] c. Spectrum Encoding

[0340] The spectrum is encoded two frames at a time using aninterpolative algorithm such as the one described in U.S. Pat. No.6,078,880 “Speech Coding System and Method Including Voicing Cut OffFrequency Analyzer”, which is incorporated herein by reference. Thedescription of the algorithm begins in column 10, line 32. For thisapplication, a 25 bit MSVQ algorithm is for the non-interpolated frames.A 3 bit interpolation flag is used for the interpolated frames. If aparametric vocoder does not use LSFs for spectral quantization, thespectral parameters can be converted to the LSF format beforeinterpolation.

[0341] d. Voicing Encoding

[0342] Voicing is encoded by requantizing the TDVC fsel voicingparameter from a 3 bit value (0 to 7) to a 2 bit value with thefollowing mapping: input fsel value transmitted index output fsel value0 0 0 1 1 2 2 1 2 3 1 2 4 2 5 5 2 5 6 2 5 7 3 7

[0343] If the parametric vocoder does not use the TDVC-style voicingparameter (fsel), then the voicing parameter must be converted to TDVCformat first.

[0344] 12. Adaptive Correlation-Domain Zero Overhead Formant Enhancement

[0345] The perceptual quality produced by low rate speech codingalgorithms can often be enhanced by attenuating the output speech signalin areas of low spectral amplitude. This operation is commonly known asformant enhancement. Typically, the formant enhancement function isperformed in the speech decoder. However, it would be desirable toperform this formant enhancement function using an existing standardizedalgorithm that has no built in capability in the decoder.

[0346] The formant method described below can dramatically improve thesubjective quality of speech when using an existing standardized speechcoding algorithm with no changes in existing equipment. The followingmethod can be applied in a speech decoder, a speech encoder or atranscoder like the ones described in Sections 1 through 7, above. Theuse of this formant enhancement method requires no extra overhead fortransmission.

[0347] Formant enhancement is used by the LPC-to-MELP transcoder 300(FIG. 3, Step 308), MELP-to-LPC transcoder 400 (FIG. 4, Step 408), andTDVC-to-LPC-10 transcoder 700 (FIG. 7, Step 710). For the MELP-to-LPCtranscoder 400 and the TDVC-to-LPC-10 transcoder 700, formantenhancement is performed on the coefficients A′, the filter coefficientsfollowing preemphasis addition. For the LPC-to-MELP transcoder 300,formant enhancement method utilizes both the coefficient sets A and A′,the filter coefficients before and after preemphasis removal.

[0348] a. The process begins with a set of predictor coefficients A(i)that represent the all-pole model of the speech spectrum. If the processis being applied to the specific case of transcoding from LPC-to-MELP(step 308 shown in FIG. 3), then the non-deemphasized predictorcoefficients A(i) are used (coefficients prior to preemphasis removal instep 306). For the MELP-to-LPC and TDVC-to-LPC transcoders, coefficientsA′(i) are used (coefficients A following preemphasis addition). A secondset of bandwidth-expanded coefficients A2(i) is generated according to:

A2(i)=γ^(i) A′(i): for MELP-to-LPC and TDVC-to-LPC, or

A2(i)=γ^(i) A(i): for LPC-to-MELP

[0349] where γ is the bandwidth expansion factor (approximately 0.4).

[0350] b. For the MELP-to-LPC and TDVC-to-LPC transcoders, thenon-expanded A(i) coefficients and the expanded A2(i) coefficients areconverted to their corresponding normalized autocorrelation coefficientsR(k) and R2(k). In order to avoid truncation effects in subsequentsteps, the autocorrelation conversion recursion is carried out to 50lags. For the LPC-to-MELP transcoder, only the expanded A2(i)coefficients are converted to their corresponding normalizedautocorrelation coefficients R2(k).

[0351] c. Next, for the MELP-to-LPC and TDVC-to-LPC transcoders, the twosets of autocorrelation coefficients R(k) and R2(k) are convolved toproduce a set of 10 enhanced coefficients R″(k):${R^{''}(k)} = {\sum\limits_{i}{{R\left( {i + k} \right)}*{{R2}(i)}}}$

[0352]  For the LPC-to-MELP transcoder, the autocorrelation coefficientset R′(k) (autocorrelation coefficients after preemphasis removal) isconvolved with R2(k) to produce a set of 10 enhanced coeffcients R″(k):${R^{''}(k)} = {\sum\limits_{i}{{R^{\prime}\left( {i + k} \right)}*{{R2}(i)}}}$

[0353] d. The enhanced autocorrelation coefficients R″ are thenconverted to 10 reflection coefficients RC″(i).

[0354] e. The reflection coefficients RC″(i) are examined to ensure thatnone have a value lying outside the range (−1.0, +1.0). If any valueslie outside this range, the maximum order stable model is used (e.g. allRC″(i)s up to the first out-of-range coefficient are retained; theout-of-range coefficient and all others following are set to zero).

[0355] f. The resulting RC″(i) set is converted back to enhancedprediction coefficients A″(i) for quantization and transmission.

[0356] A significant benefit of this formant enhancement method is thatit produces a 10^(th) order filter that has formant enhancementcharacteristics similar to the underlying 20^(th) order filter (thatwould have been obtained by simply convolving the two sets of predictorcoefficients). Because there is no change in filter order, there is noadditional overhead involved in transmission.

[0357] 13. Adaptive Frequency-Domain Zero Overhead Formant EnhancementMethod

[0358] An adaptive frequency-domain formant enhancement method isdescribed below. As with the correlation-domain method described abovein Section 12, the following method can dramatically improve thesubjective quality of speech when using an existing standardized speechcoding algorithm with no changes in existing equipment. The method canalso be applied in a speech decoder, a speech encoder or transcoder, andrequires no extra overhead for transmission.

[0359] a. The process begins with a set of predictor coefficients a(i)that represent the all-pole model of the speech spectrum. An amplitudespectrum H(ω) is extracted from the coefficients using:${H(\omega)} = \left| \frac{1}{\sum\limits_{i = 0}^{m}{{a(i)}^{{ij}\quad \omega}}} \right|$

[0360]  where H(ω) is the spectral amplitude at digital frequencyω(=2πf/8000 for a system with 8 kHz sampling rate), a(i) are thepredictor coefficients, m is the filter order and j is {squareroot}{square root over (−1)}. Amplitude values H(w) are computed every50 Hz from 0-4000 Hz and stored in an array ampsav(k)=H(2πk50/8000), k=0. . . 39.

[0361] b. The set of amplitude values computed in step a are used tocalculate a set of enhancement values amp(k) according to the methoddescribed in U.S. Pat. No. 6,098,036, “Speech Coding System and MethodIncluding Spectral Formant Enhancer”, column 18 with ω_(o)=2π50/8000 andf_(o)=50.

[0362] c. Set amp(k)=amp(k)*ampsav(k)

[0363] d. Compute a set of enhanced autocorrelation coefficients fromthe enhanced amplitude set amp(k) using:${R(i)} = {\sum\limits_{k = 0}^{39}{{{amp}^{2}(k)}{\cos \left( {{ik}\quad \omega_{0}} \right)}}}$

[0364] e. The enhanced autocorrelation coefficients are then convertedto 10 reflection coefficients rc(i).

[0365] f. The reflection coefficients are examined to ensure that nonehave a value lying outside the range (−1.0, +1.0). If any values lieoutside this range, the maximum order stable model is used (e.g. all rc()s up to the first out-of-range coefficient are retained; theout-of-range coefficient and all others following are set to zero).

[0366] g. The resulting rc( ) set is converted back to predictioncoefficients for quantization and transmission.

[0367] h. A significant benefit of this algorithm is that it produces a10^(th) order filter that has similar formant enhancementcharacteristics to those produced using the method of U.S. Pat. No.6,098,036. Because there is no requirement to separately transmit theamplitude values, there is no additional overhead involved.

[0368] 14. Conclusion

[0369] As described above, the present invention includes a transcoderwhich converts parametric encoded data in the compressed domain. Sixindividual specific transcoder structures and two formant enhancementmethods are described in detail. A Voice Activity Detector whichoperates in the compressed domain is also disclosed. A Dual Talkersynthesizer which uses a method of low-rate encoding is also disclosed.Lastly, a Compressed Domain Conference Bridge is disclosed whichutilizes the compressed domain transcoder, the compressed domain voiceactivity detector, and the dual talker synthesizer.

[0370] It should be noted that while the inventions are described withrespect to speech coding applications, the inventions and the techniquesdescribed above are not limited to speech coding. More generally, theinventions can be applied to any other type of compressed datatransmission. For example, the transcoders described in sections 1-7could be used to convert any compressed data stream from a firstcompressed format to a second compressed format in the compresseddomain. Additionally, the conference bridge, the voice activitydetector, the dual talker, and the formant enhancement methods could allbe applied to other types of compressed data transmission other thancompressed speech.

[0371] Although the systems and methods of the present invention hasbeen described in connection with preferred embodiments, it is notintended to be limited to the specific form herein. On the contrary, itis intended to cover such alternatives, and equivalents, as can bereasonably included within the spirit and scope of the invention asdefined by the appended claims:

1. A method for enhancing prediction coefficient signals, comprising: a)receiving a set of prediction coefficient signals; b) generating a setof bandwidth expanded coefficient signals based on said predictioncoefficient signals; c) converting at least some of said predictioncoefficient signals and said bandwidth expanded coefficient signals intocorresponding autocorrelation domain coefficient signals; d) convolvingsaid autocorrelation domain coefficient signals; e) converting saidconvolved autocorrelation domain coefficient signals into reflectioncoefficient signals; f) determining the stability of said reflectioncoefficient signals; and g) converting said reflection coefficientsignals into enhanced prediction coefficient signals.
 2. A device forenhancing speech prediction coefficient signals, comprising: a) meansfor receiving a set of prediction coefficient signals; b) means forgenerating a set of bandwidth expanded coefficient signals based on saidprediction coefficient signals; c) means for converting at least some ofsaid prediction coefficient signals and said bandwidth expandedcoefficient signals into corresponding autocorrelation domaincoefficient signals; d) means for convolving said autocorrelation domaincoefficient signals; e) means for converting said convolvedautocorrelation domain coefficient signals into reflection coefficientsignals; f) means for determining the stability of said reflectioncoefficient signals; and g) means for converting said reflectioncoefficient signals into enhanced prediction coefficient signals.
 3. Amethod for enhancing coded speech signals, comprising: a) receiving aset of prediction coefficient signals; b) generating a set of bandwidthexpanded coefficient signals based on said prediction coefficientsignals; c) converting at least some of said prediction coefficientsignals and said bandwidth expanded coefficient signals intocorresponding autocorrelation domain coefficient signals; d) convolvingsaid autocorrelation domain coefficient signals; e) converting saidconvolved autocorrelation domain coefficient signals into reflectioncoefficient signals; f) determining the stability of said reflectioncoefficient signals; and converting said reflection coefficient signalsinto enhanced prediction coefficient signals. g) receiving coded speechsignals; and h) processing said coded speech signals based on saidenhanced prediction coefficient signals.
 4. A device for enhancing codedspeech signals, comprising: a) means for receiving a set of predictioncoefficient signals; b) means for generating a set of bandwidth expandedcoefficient signals based on said prediction coefficient signals; c)means for converting at least some of said prediction coefficientsignals and said bandwidth expanded coefficient signals intocorresponding autocorrelation domain coefficient signals; d) means forconvolving said autocorrelation domain coefficient signals; e) means forconverting said convolved autocorrelation domain coefficient signalsinto reflection coefficient signals; f) means for determining thestability of said reflection coefficient signals; and converting saidreflection coefficient signals into enhanced prediction coefficientsignals. g) means for receiving coded speech signals; and h) means forprocessing said coded speech signals based on said enhanced predictioncoefficient signals.